|
|
Zeitsignal FFT analysieren |
|
nullstein |
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 09.09.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.09.2011, 10:54
Titel: Zeitsignal FFT analysieren
|
|
Hallo.
Zunächst möchte ich Hallo sagen. Ich bin neu in diesem Forum und hoffe hier evtl ab und zu Hilfe zu finden, aber auch hoffentlich gelegentlich helfen zu können.
Zu meinem Problem:
Ich habe ein sehr fein abgetastetes Zeitsignal erhalten. Messdauer 60s mit Fs=102.4e3 kS/s.
Nun wird gefordert, dass ich das Zeitsignal FFT analysiere im Bereich von 16Hz-16kHz mit einer Auflösung df=1Hz. Und hierin besteht auch schon das Problem. Wie bekomme ich das hin?
Ich habe es mir einfach gemacht und die Anzahl der FFT Linien NFFT gleich der Samplingrate gesetzt--> NFFT=Fs. Um nun noch Unstetigkeiten auszubügeln habe ich mein Zeitsignal mit Hanning gefenstert und nen Overlap von 66,67% gewählt. Aber meine Ergebnisse sind leider falsch (verglichen mit Referenzergebnissen).
Hier mal mein abgespeckter Code:
Vielleicht was ja jemand Rat.
Vielen Dank.
|
|
|
|
|
Kevin |
Forum-Fortgeschrittener
|
|
Beiträge: 93
|
|
|
|
Anmeldedatum: 18.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.09.2011, 11:07
Titel:
|
|
Hallo,
Du hast N samples in 60s. Die Zeitauflösung ist also dt=60s/N.
Die höchste FFT Frequenz die noch realistisch ist f=(1/dt)*(N/2)/N
--> FFT --> bereich von 16Hz-16kHz rausschneiden.
Wo genau liegt dein Problem?
Gruß
Kevin
_________________
1000 Buchstaben? Warum nur 6?
|
|
|
nullstein |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 09.09.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.09.2011, 11:47
Titel:
|
|
Mein Problem liegt in der geforderten Auflösung! Momentan habe ich eine Auflösung von 0.02Hz. Gewollt sind aber 1Hz Auflösung. In meinem Code (siehe oben) habe ich die Auflösung auf 1Hz geschraubt. Die Ergebnisse sind aber komplett anders als bei 0.02Hz Auflösung.
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 10.09.2011, 06:51
Titel:
|
|
Du musst ein Upsampling des Signals durchführen:
Die Frequenzauflösung df = fs/N
Wenn ich mich nun nicht verrechnet habe, hast du bei df = 0.02 Hz und fs = 102.4e3 Hz N = 512e6 Messwerte
Damit df = 1 Hz ergibt, benötigst du also nur 102.4e3 Messwerte
512e6/102.4e3 = 50 ...somit kannst du nur jeden 50. Messwert des Zeitsignals für das FFT-Spektrum verwenden.
|
|
|
nullstein |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 09.09.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.09.2011, 11:37
Titel:
|
|
Das war ja meine erste Idee. Ich habe mit downsample jeden xten Wert meines Zeitsignals genommen. Die Amplituden stimmen dann aber gar nicht mehr. Ich habe dann viel zu geringe Amplituden.
Weitere Ideen?
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 12.09.2011, 19:36
Titel:
|
|
Sorry...aber dieser Code ist halt auch u.a dank der Eval Funktion sehr unübersichtlich. Ein paar mehr Kommentare wären auch hilfreich Für mich ist hier nicht ersichtlich, dass du nur jeden 50. Messwert nutzt. Das mit dem Overlap verstehe ich schon mal gar nicht. Warum wird nicht das kompl. Zeitsignal mit der höheren Abtastrate in den Freq.bereich transfomiert?
|
|
|
Kevin |
Forum-Fortgeschrittener
|
|
Beiträge: 93
|
|
|
|
Anmeldedatum: 18.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.09.2011, 14:30
Titel:
|
|
Hallo,
zwing' doch die Frequenzen zwischen den ganzzahligen künstlich auf NULL. Oder Du machst das schon vorgeschlagene und schmeißt einfach Werte aus dem Input raus, dann hast du die Frequenzen auch nicht.
Ich würd' so vorgehen:
1. FFT mit 0.02 Hz auflösung
2. ganzzahlige Frequenzen rausholen
3. nochmal FFT mit wenig Frequenzen
Gruß
Kevin
_________________
1000 Buchstaben? Warum nur 6?
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 14.09.2011, 16:48
Titel: Re: Zeitsignal FFT analysieren
|
|
Hallo nullstein,
Ich schließe mich DSP an:
Ich empfehle dringend auf die EVALs zu verzichten. Sie machen den Code langsam und behindern das Debuggen enorm. In diesem Forum gibt es hunderte Threads zu dem Thema, einfach mal nach EVAL, ASSIGNIN und EVALIN suchen. Wenn der Code danach übersichtlicher ist, springen die Fehler oft schnell ins Auge.
Siehe auch: http://matlab.wikia.com/wiki/FAQ
Es lohnt sich, die FAQ ganz zu lesen - wieso sollte man nicht von den Problemlösungen der anderen profitieren...
Gruß, Jan
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|