FFT Effektivwerte aus Spektrum berechnen

Gast #749271
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));
Gast #749290
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.
Gast #749311
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));
Gast #749430
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?
Gast #749507
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.