Hallo, ich dachte, dass man bei einer FFT als Ergebnis die Ampliutden bei den entsprechenden Frequenzen des Eingangssignals rausbekommt. Nun bekomme ich für das Signal: n = [0:0.1:19.9]; x = cos(0.05*2*pi*n); nach der FFT als Amplitude 100 bei der Frequenz 0.05 Hz. Theoretisch sollte ich ja als Amplitude 1 rausbekommen, bitte was mache ich falsch? FFT = abs(fft(x,4096));
Also erstens passt der von dir gepostete code nicht zu deinen Aussagen. Wenn du die FFT 4096 Punkte lang machst, erzeugst du durch das zero-padding eine Frequenzauflösung, die so nicht vorhanden ist. Zweitens fehlt in der DFT-Gleichung das 1/N, das bei der DFS noch vorhanden ist. Drittens handelt es sich um die komplexe Form der DFT mit sozusagen gegenläufigen Zeigern. D.h. die tatsächliche Amplitude ist zwei mal so groß. Zusammenfassend: Amplitude = 2/N*FFT PS: Nutze zero-padding nur, wenn du weißt, was du da tust.
Ja ertappt, meine obige Aussage stimmt nur bei FFT = abs(fft(x,200)); und mit deiner Hilfe werden die Amplituden nun korrekt angezeigt! Danke sehr! FFT = 2/200*abs(fft(x,200));
der Gleichanteil ist davon aber doch nicht betroffen, also gibt FFT = 2/200*abs(fft(x,200)); bei FFT(0) einen doppelt so hohen wert wie die Amplitude tatsächlich ist aus x = ones(1,200) FFT = 2/200*abs(fft(x,200)); FFT(1) bei einem Signal im komplexen Basisband sollte dieser Faktor 2 doch wegfallen oder?
Natürlich ist der Betrag bei Frequenz 0 die Amplitude. Gilt übrigens auch für ein Signal mit Frequenz fs/2. Preisfrage warum ist das so?
yep, der Betrag von 2 fällt weg: n = [0:0.1:19.9]; x = exp(j*(0.05*2*pi*n)); FFT = 1/200*abs(fft(x,200)); da das Signal doch reell ist müsste man doch korrekterweise beide Spiegelfrequenzen aufaddieren können n = [0:0.1:19.9]; x = cos(0.05*2*pi*n); FFT = 1/201*abs(fft(x,201)); FFTA = FFT(2:101); FFTB = FFT(102:201); FFTB = FFTB(end:-1:1); final = [FFT(1),FFTA+FFTB]; plot(final) sorry aber Fourier Trafo ist etwas wo ich mich immer noch nicht so sicher fühle wie ich sollte.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.