Hallo Karina,
> Ich hab als Nebenaufgabe bekommen, aus einer Textdatei mit 3 Achsen eine
> FFT an Octave durchzuführen, komme mit diesem Programm aber überhaupt
> nicht zurecht!
>
> In der Textdatei stehen die Daten in folgender Form:
> x1,y1,z1
> x2,y2,z2
> ...
Ich vermute, die Dateien sind in ASCII-Zeichen.
1) Lösche zunächst mit einem Texteditor die Kommata und tausche sie
beispielsweise gegen Leerzeichen aus (weiß nicht 100%ig, ob das nötig
ist, aber mach es besser mal)
2) Achte darauf, daß der Dezimalpunkt tatsächlich ein Punkt ist.
3) Benennen die Datei "datei.asc".
Dann kannst Du in Octave die folgenden Befehle ausführen, am besten erst
einzeln zur Fehlerkontrolle:
M = load('datei.asc'); % Matrix laden
x = M(:,1);
y = M(:,2);
z = M(:,3);
fs = 2500; % Abtastfrequenz
N = length(x); % Laenge der Vektoren
f = 0:1/N*fs:(N-1)/N*fs; % Frequenzvektor
ftx = fft(x); % Fouriertransformation x
fty = fft(y); % Fouriertransformation y
ftz = fft(z); % Fouriertransformation z
figure(1); % Bildschirmplot
subplot(3,1,1); % Teilfenster
plot(f,abs(ftx)); % Betragsspektrum x-Vektor
subplot(3,1,2); % Teilfenster
plot(f,abs(fty)); % Betragsspektrum y-Vektor
subplot(3,1,3); % Teilfenster
plot(f,abs(ftz)); % Betragsspektrum z-Vektor
xlabel('f/Hz');
ylabel('Amplitudenspektrum');
Anschließend:
print -Peps2 'plot.eps'
(plottet in eine EPS-Datei)
wenn Dir die Qualität egal ist:
print -Ppng 'plot.png' oder
print -Pjpg 'plot.jpg'
Wenn Du ein Phasenspektrum brauchst, nimmst Du angle(ftx) statt
abs(ftx).
Beim Powerspektrum benutzt Du abs(ftx).^2
Beachte dabei den Punkt vor dem Hochkomma; er bewirkt, daß die Operation
komponentenweise angewendet wird. Normalerweise versucht Matlab/Octave
ansonsten eine Matrixmultiplikation.
Mit dem Befehl axis([x1,x2,y1,y2]) kannst Du in einen Bereich des Plots
zoomen.
> Nun soll ich hieraus für jede Messachse eine eigene FFT berechnen und
> als Plot ausgeben lassen.
> Erste Frage wäre, geht das überhaupt oder müssen die jeweiligen Achsen
> in eigene Textdateien?
> Und zweite Frage ist eher eine Bitte: Kann mir wer dafür ein Skript
> vorbeireiten, welches ich dann einfach auf meine Textdatei anwenden
> kann?
> Würde mich sehr darüber freuen, weil ich noch nie mit diesem Programm in
> Berührung gekommen bin.
Das Programm kannst Du Dir ruhig anschauen. Die Befehle sind zu großen
Teilen identisch mit Matlab.
Grüße
Michael