allo Zusammen,
einmal eine Frage an die FFT experten.
Anbei einmal der FFT Code, damit ihr micht nicht
auspeitscht.
Code:
Y = fftshift(abs(fft(vRecSignal,iNfft)));
Nun zu meiner Frage, ich habe mal drei Screenshots angehangen. Alle sind
ein Sinus mit 5 kHz und 44,1 kHz abtastrate. iNfft ist einmal 100 Hz
einmal 1kHz und einmal 10 kHz. Nun Verändert sich die FFT recht Stark
durch iNfft verändert. Ich hab nur keine Ahnung warum. Die
Hat da jemand eine Idee?
Soweit ich weiß ist es ja so, wenn iNfft länger mache als vRecSignal
(Ist in diesem Fall 100) dann wird mir nullen Aufgefüllt. Wie kommt es
dann das hier in den Bildern die FFT so aussieht als würde sie
Schwingen.
Gout schrieb:> Anbei einmal der FFT Code, damit ihr micht nicht> auspeitscht.
Das ist nur ein Teil des Codes. Der Rest des Codes ist als Text
beschrieben.
Gruß,
Du hast im Zeitbereich eine Multiplikation mit einer Rechteckfunktion.
Dies entspricht im Frequenzbereich einer Faltung mit einer
Sinc-Funktion. Das ist letztlich was du da siehst.
Was erhoffst du dir durch das auffüllen mit Nullen des Zeitsignals?
Dadurch errechnest du das Spektrum einer Periodischen Funktion die
zyklisch zwischen deinem Sinus und 0 wechselt.
Was Lukas sagen will ist:
Wenn du nicht willst, dass es wie ein Sinc aussieht, musst du eine
andere Fensterfunktion (momentan keine = Rechteck) nehmen.
Hallo Und danke für die Antwort.
Jetzt mal ne kurze Frage, wenn ich den Sinus
nun so Anpasse, das er bei Null Startet und bei Null endet
(Also Quasi eine Genaue Periode) müsste das Fenstern doch Überflüssig
sein oder?
Man Fenstert ja nur weil intern Matlab bei einer FFT den Sinus so wie
der vorkommt wieder nimmt und den Sinus dann fortsetzt?
So und jetzt zu euren Fragen,
naja es ist einfach ne Aufgabe:
Erzeuge einen Sinus mit Frequenzz 5kHz und einer Abtastfrequenz von
44.1 kHz, mit 100 Abtastwerten.
Führe eine FFT mit 100, 1000 und 10000 durch und Interpretiere das
ergebnis.
Der Quellcode den ihr oben seht ist aus vroherigen aufgaben immer mehr
enstanden und so bin ich jetzt beim Interpretieren und komme nicht
weiter.
Achso,
hab ich also richtig verstanden das mit Nullen aufgefült wird?
Ich seh halt das gleiche Ergebnis selbst wenn ich genau eine Periode
abschneide und viel höher Abtaste. Also Quasi keine "Ecken" mehr im
Sinus habe.
Da wäre das Rechte Winkel der die Sign Funktionen verursacht durch das
zero Padding quasi am Ende und am Anfang der Sinus Funktion.
Ich hab es mal versucht dazustellen, in der mitte ist ein Sinus,
erkennt man halt nicht weil da ich Links un Rechts 4500 Nullen eingefügt
habe. Und man siehe da, ich kriege das Gleiche ergebnis.
Grüße
Gout
siehst du denn bei den 1000 oder 10000 noch einen Unterschied?
Was durch das Zero-padding im Zeitbereich passiert, ist das das Spektrum
interpoliert wird. Durch die FFT mit 100, 1000 oder 10000 änderst du
hier nichts an deinem 100 Punkte Rechteckfensters. Und das Spektrum
dieses Fensters siehst du bei mehr FFT-Punkten feiner aufgelöst. Die
Frequenzauflösung deines Nutzsignals wird dadurch jedoch nicht
verbessert.
Wenn dein Fenster genau in N Perioden deines Nutzsignals passt, sind die
FFT-Bins in den Nullstellen der sinc-Funktion des Fensters.
Irgendwie scheint der Unterschied zwischen Fourier Reihe und Fourier
Transformierten, sowie Fourier Transformation und FFT nicht angekommen
zu sein.
Eine periodische Funktion ergibt eine Fourier Reihe, eine Funktion
bestehend aus einzelnen Linien. Waehrend die Fouriertransformierte einer
nicht periodischen Funktion, zb zB aus einzelnen Pulsen, eine
kontinuierliche Funktion ist.
Die Fouriertransformation hat ein paar Randbedingungen. zB muss das
Signal gegen unendlich schneller abfallen wie jede Potenz. Daraus gilt
dann, dass die Fourierreihe kein Output der Fouriertransformation ist.
Die FFT ist dann eine gesampelte abgespeckte Version, mit zusaetzlichen
Randbedingungen.
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang