Hi,
habe mich jetzt schon eine Zeit lang mit DSP und der FFT beschäftigt,
aber ich habe da noch Probleme:
Ich habe mir in Matlab ein Cosinus-Signal gebastelt mit einer Länge von
N = 128 und einer Frequenz von 32Hz.
So wie ich die FFT verstehe, gibt mir die FFT ein Frequenzspektrum
zurück, mit Peaks an den Frequenzen die dem Eingangssignal entsprechen.
( Das Eingangssignal kann ja aus mehreren überlagerten Signalen bestehen
)
Habe versucht den Frequenzgang auf 0 - 32Hz zu normieren.
Also sollte mir die FFT von einem Signal mit 32Hz, einen Peak bei 32Hz
anzeigen.
Nur das tut sie bei mir nicht ganz.
Entweder liegt es an meinem Verständnis für Matlab, für die FFT oder
wahrscheinlich an beidem ;)
Ich habe auch ein Problem die Zahl Pi in mein Signal zu bringen:
Wenn ich zb. so schreibe: x = cos(n*pi*f) , dann sind in x nur 1er und
kein cosinus.
kann es sein, dass da noch die Normierung auf PI fehlt?
Dein Cosinu soll doch sicher von 0...2 pi laufen.
Im Spkerum sehe ich an der 16. und der n-16. Stelle den peek.
16/128 * fs = 1/8 fs
mit 2pi * 1/8 = 3/4 -> > als Nyqist!
Ich würde sagen, du hast eine Art undersampling durchgeführt ...
Du solltest mal mehrere Frequenzen addieren und zwar so, dass sie alle
unterhalb der Nyquistfrequenz sind.
Also
fs = 100% = 128 pkte
f1 = 25%
f2 = 35%
Hi, nur mal ganz schnell, mach den cos mal so:
dt=0.00001; %Abtastzeit in s, ist Geschmackssache
N=1000;
t=[0:dt:(N-1)*dt]'; %Zeitvektor
f=32;
y = cos(2 pi f * t);
Ausserdem musst du beachten, in welcher Reihenfolge die fft-Funktion das
Ergebnis in den Ergebnis-Vektor schreibt --> erst die kleinsten
positiven..., dann die größten negativen (imaginären, die selten
jemanden interesiert)... ENDE des Vektors.
viele Grüße
Danke für die Antworten!
Die Darstellung passt jetzt.
1
fs=1000;
2
dt=1/fs;%Abtastzeitins
3
N=100;
4
t=[0:dt:(N-1)*dt]';%Zeitvektor
5
f=100;%Frequenz
6
7
x=cos(2*pi*f*t);
8
9
%FFT
10
fx=fft(x);
11
12
figure;
13
subplot(2,1,1)
14
plot(t,x);
15
title('x(t)');
16
17
subplot(2,1,2)
18
plot(linspace(0,fs,N),abs(fx));
19
title('Spectrumofx(t)')
Aber bei der Darstellung der x-Achse im Frequenzgang habe ich noch
leichte Probleme.
Also ich habe eine Abtastfrequenz von 10kHz, was der Gesamtbandbreite
der FFT entspricht. Mein Cosinus hat eine Frequenz von 100 Hz, dort habe
ich auch einen Peak.
Nur wieso ist bei 900 Hz ebenfalls ein Peak?
Ja bei 1000Hz darf die höchste darstellbare Frequenz nicht größer als
500Hz sein.
Aber das Theorem habe ich ja eingehalten.
Ich denke fftshift war die Funktion die ich benötigt habe :)
Danke!