|
hatebreed |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.07.2012, 09:46
Titel: FFT Verständnisfrage
|
|
Hallo, ich habe eine Frage zur FFT.
Ich habe eine Menge an Messdaten. Radius und Zeit. Ich möchte die Frequenz der Schwingung bestimmen, mit welcher der Radius schwingt. Dazu habe ich ein Skript zur FFT gefunden, welches ich aber nicht verstehe, da ich noch Matlab Neuling bin und durch FFT nicht so wirklich durchblicke. Der Radius besteht aus ca. 250 Messwerten.
Mir ist nicht ganz klar, was der rot markierte Bereich genau macht und ob das so stimmt. Wäre nett wenn mir jemand helfen könnte.
|
|
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 10.07.2012, 10:07
Titel:
|
|
Hier geht es um die richtige Skalierung der Magnitude. Schau dir dazu bitte folgendes Skript an.
http://www.gomatlab.de/fft-umfassendes-beispiel-t777.html
Deine Skalierung von g ist nicht ganz korrekt. Die Funktion fft berechnet ein beidseitiges Spektrum -fs/2...0...+fs/2 [Hz]. Daher sind die Amplituden durch 2 geteilt. Stellt man nun nur den positiven Freq.-bereich dar, muss man anders skalieren. Daher wird mit 2 multipl.
Allerdings darf Y(1) = Gleichsignalanteil und Y(NFFT/2 + 1) = Ampl. bei der Nyquistfreq. nicht verdoppelt werden, da sie in Y nur einmal vorkommen, nicht so wie die anderen Werte. Dies wird ebenfalls im Skript gezeigt.
|
|
|
hatebreed |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.07.2012, 11:22
Titel:
|
|
Danke für deine Antwort... aber sie bringt mich leider auch nicht so wirklich weiter .
Wie müsste ich den Code denn ändern, damit er richtig ist?
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 10.07.2012, 12:47
Titel:
|
|
Deshalb der Link zu dem Skript...dort ist doch alles erklärt
|
|
|
Chrislap |
Forum-Anfänger
|
|
Beiträge: 28
|
|
|
|
Anmeldedatum: 04.07.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.07.2012, 09:09
Titel:
|
|
hi, das ist immer sone sache mit den skripten. jeder hat doch iwie was leicht anderes vor sich. bei mir kommt zB das hier wenn ich versuche so zu skalieren wie da vorgeschlagen..
Error using horzcat CAT arguments dimensions are not consistent.
Error in alles (line 64)
amplitudengang = [amplH(1)/L amplH(2:L/2)/(L/2) amplH((L/2)+1)/L];
ich arbeite ja grad an ner ähnlichen problematik und mein arbeitsstand ist erstma folgender. allerdings keine ahnung ob das richtig ist, es sieht erstmal nicht falsch aus
-Mi(:,2) wäre dein messwertvektor
-poti ist nfft bei den meisten hier
-L ist Länge des signals
gruß chrisl
|
|
|
hatebreed |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.07.2012, 09:10
Titel:
|
|
ich habe versucht den Code anzuwenden, bekomme aber immer eine Fehlermeldung ausgeworfen.
??? Error using ==> horzcat
CAT arguments dimensions are not
consistent.
Error in ==> Frequenzanalyse at 39
amplitudengang = [amplH(1)/N
amplH(2:N/2)/(N/2) amplH((N/2)+1)/N]; %
DC-Bin und Nyquistfreq. auf N normieren!
woran liegt das? amphH ist ein 1024 x 1 Vektor, N=1024.
Wenn ich das Beispiel ausführe, gibt es keine Fehlermeldung.
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 11.07.2012, 09:28
Titel:
|
|
Probier bitte folgendes Bsp...genau das Gleich macht auch das Skript aus dem Link:
Wenn du nun die Skalierung aus deinem Code verwendest, kommt nämlich nicht der richtige Gleichsignalanteil von 10 (siehe y) heraus.
Edit: Sollte y kein Zeilen- sondern Spaltenvektor sein, musst du hier Semikolon verwenden:
Ist poti und L bei dir gleich? Wenn nicht, ist die Skalierung der Amplitude nicht nur beim Gleichsignalanteil und bei der Nyquistfreq. falsch.
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.07.2012, 10:06
Titel:
|
|
Super, hat am Spaltenvektor gelegen.
Besten Dank
|
|
|
Chrislap |
Forum-Anfänger
|
|
Beiträge: 28
|
|
|
|
Anmeldedatum: 04.07.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.07.2012, 10:38
Titel:
|
|
|
|
|
ja stimmt - das lag an dem zeilenvektor mit der fehlermeldung..
allerdings bekomme ich bei eurer version amplituden im stark negativen bereich - sieht auch mit den frequenzen leicht anders aus (was nicht heißt, dass es nu falsch ist)..
und nein wenn du mich meinst, ist poti und L nicht gleichlang. jedenfalls nicht bevor mit nullen aufgefüllt wurde. meine frequenzen schienen auch leicht verschoben (zu den niedrigen frequenzen - könnte echt im verhältnis von L zu poti sein) - ich hatte das hier am anfang schonmal gefragt, ob ich das richtig gemacht habe - ich habe das verhältnis poti/L schon versucht selber irgendwo anzubringen, kam bisher aber auf keinen grünen zweig. wäre nett wenn du sagen würdest, was du genau meinst - was da der fehler ist - wo habe ich etwas übersehen? ich kann schlecht konstanten anbringen ohne zu wissen was ich da machen^^ wäre super wenn du in meinem thema bei signalverarbeitung mal reinguckst und mir sagst was du meintest
danke, lg chrisl
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 11.07.2012, 10:49
Titel:
|
|
Fehler: Du musst durch die Anzahl Messwerte teilen, die auch der Länge von Mi entsprechen. Ist nun poti > length(Mi) wird ja hier automatisch Nullen ans Ende von Mi angehängt, um auf die Länge von poti zu erweitern. Dann darf hier nicht durch L sondern es muss durch poti geteilt werden. Ich empfehle dir aber den Weg der Skalierung aus dem Skript zu verwenden, oder wie ich ihn hier in dem kleinen Bsp. gezeigt habe. Was dann für ein Signal für die fft verwendet wird, ist ja egal.
Diese Skaleriung ist falsch. Der Gleichsignalanteil etc. ist dann nicht richtig. Siehe Bsp. oben!!
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 11.07.2012, 11:10
Titel:
|
|
Chrislap hat Folgendes geschrieben: |
allerdings bekomme ich bei eurer version amplituden im stark negativen bereich -
|
Welche Version für den Plot hast du denn verwendet?...ich habe einmal die Darstellung in dB und einmal linear (einfacher nachvollziehbar) angegeben. Sorry für den Wechsel...ich wollte keine Verwirrung stiften.
Hier kommen nun bei dem Testsignal y für den Gleichsignalanteil 20 dB = 10 linear und 0 dB = 1 linear bei der Frequenz f heraus. Alle´anderen Frequenzen haben eine negative Amplitude. Dies entspricht quasi der Null in der linearen Darstellung. -100 dB sind z.B. 0.00001
Zuletzt bearbeitet von DSP am 11.07.2012, 11:11, insgesamt einmal bearbeitet
|
|
|
Chrislap |
Forum-Anfänger
|
|
Beiträge: 28
|
|
|
|
Anmeldedatum: 04.07.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.07.2012, 11:11
Titel:
|
|
danke, also da hakt es also. leider ändert sich aber rein gar nix, wenn ich durch poti, statt L teile bei der fft - kann ich mir auch nicht erklären - im workspace sehe ich doch die dimensionen - L ist 6800 lang also deutlich kürzer..
ich versuche es auch immer mit euren varianten die ich so finde. allerdings, wie schon gesagt, sieht das denn ziemlich merkwürdig verzerrt aus und befindet sich in nem bereich von -160 bei der amplitude^^
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 11.07.2012, 11:57
Titel:
|
|
Hast du meinen vorherigen Post zur Darstellung linear/log. angesehen? Dort ist erklärt warum -160 vorkommen.
|
|
|
|
|
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.
|
|