2016-05-30 13 views
1

Ich habe ein Audiosignal in Matlab und ich änderte es mit Plot. Daher habe ich die Achse mit x- und y-Werten modifiziert, um nur die gewünschten Informationen anzuzeigen. Nun würde ich gerne wissen, ob es möglich ist, dieses geplottete Signal als neue -Datei zu speichern.Speichern Plot als Audiodatei Matlab

Hier ist, wie mein Grundstück steht geschrieben:

plot(t1,y1); 
axis([T1-0.1 T1b-0.1 min(y1) max(y1)]); 

Dies ist, wie meine Datei gelesen wird:

file1 = 'C:\myfile.wav'; 
[y1,fs1] = audioread(file1); 
N1 = length(y1); 
t1 = linspace(0, N1/fs1, N1); 

Hier sind meine Signale um das Problem zu visualisieren (das erste ist das Original und die zweite ist die, die ich) gespeichert werden soll:

enter image description here

+0

Bitte bearbeiten Sie Ihre Frage so, dass sie Folgendes enthält: den Code, den Sie zum Lesen der Datei verwenden (wenn Sie dies tun), welches Format gespeichert werden soll und wo die Abtastrate angegeben ist. Darüber hinaus wäre es gut zu klären, ob Sie die Darstellung nur mit "Achse" skalieren oder ob Sie in der Lage sein möchten, auf die Figur zu zoomen und dann den gezoomten Teil des Signals zu speichern. – Matt

+0

Das Original-Plot wird mit der Achse skaliert, es ist kein Zoom auf die Figur, ich mache es in meinem Programm – Kenwa

+0

Ich bin mir nicht sicher, was T1 und T1b sind? – noumenal

Antwort

1

Verwenden audiowrite() mit den folgenden Parametern: Dateiname, y, Fs

wo y ist das transformierte Signal und Fs ist fs1. Wenn Sie beispielsweise y1 und fs1 übergeben, wird einfach eine Kopie der Originaldatei erstellt. Der Dateiname ist offensichtlich eine Zeichenfolge. Stellen Sie sicher, dass Sie nach der Transformation y2 definieren und y2 als y übergeben.

Um y2 zu erhalten, müssen Sie das Signal transformieren, ohne den Achsenbefehl zu verwenden. Zuerst müssen Sie die ursprüngliche Länge und den Ausgangspunkt herauszufinden:

% start = goes here 
% original_length = goes here 
length_in_ms = original_length - 0.1 * original_length 
samples = round(length_in_ms * Fs); 

y2 = y1(start:samples) 
audiowrite(filename, y2, fs1) 

-Code nicht getestet, aber das ist die Grundidee.

+0

OK, aber wie definiere ich y2, das ist mein Problem. Ich weiß nicht, wie man y1 Werte von T1-0.1 zu T1b-0.1 – Kenwa

+0

nimmt Ich habe dies jetzt im Code geklärt. – noumenal

+0

Wo definieren Sie T1 und T1b? – noumenal