FFT über .csv via Octave

Oft möchte man geloggte Daten eines Zeitsignals in den Bildbereich transformieren.  Hierzu lässt sich sehr gut Octave verwenden.
In diesem Beispiel wird eine Datei eingelsen, welche den Wert des Zeitsignals enthält und durch ein Simikolon getrennt anschließend zugehörige Zeit enthält. Neue Datenpunkte werden dann durch eine neue Zeile getrennt.

Hier ein Beispiel:

50; 0 s

100;10 s

144;20 s

142;30 s

122;40 s

Hier der Octave Code, welcher die Datei einliest und die FFT durchführt und plottet:

fid=fopen("Dreieck.csv","r","native");
y=fscanf(fid,"%f;%f s",[2 inf]);
subplot(2,1,1);
plot(y(2,:),y(1,:));
title("Zeitbereich der .csv Datei");
xlabel("Zeit in s");
ylabel("Wert");
s=abs(fft(y(1,:)));
x=[0:1:length(y(1,:))-1];
fs=100;
xHz=x.*(fs/length(y(1,:)));
subplot(2,1,2);
plot(xHz,s);
axis([0,50,0,10000]);
title("FFT der .csv Datei");
xlabel("Frequenz in Hz");
ylabel("Amplitude");

Zunächst wird die Datei Dreieck.csv mit Lese Rechten geöffnet und dann mit fscanf nach der Formatierung eingelesen.
Nun wird die Zeitfunktion in den oberen Bereich geplottet und die Achsen dort formatiert.
Nun wird die FFT über alle Punkte der Zeitfunktion gebildet. Anschließend wird mit x und xHz die x Achse in die Frequenz zurückgerechnet.
In unserem Fall beträgt die Sample Frequenz des Zeitsignals 100Hz. Nun wird die FFT in den unteren Bereich geplottet und formatiert.

Dies ergibt dann folgenden Output (zum herranzoomen auf das Bild klicken):

Dieser Beitrag wurde unter DSP, Octave abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.