WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

FFT einer Schwingung

 

Lysop
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 12.12.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2010, 14:48     Titel: FFT einer Schwingung
  Antworten mit Zitat      
Hallo,

ich bin relativer Neuling, was den Umgang mit Matlab betrifft und hab keine Ahnung von Signalverarbeitung, deswegen stell ich jetzt mal meine Frage hier.


Ich habe ein Signal (Schwinggeschwindigkeit mm/s) und habe die Messwerte in einem Vektor M abgespeichert.


um mich mal einfach heranzutasten, habe ich folgendes probiert:

Code:

n=length(M);
C=abs(fft(M,n)), C=C/n;
f=linspace(1,600,n/2);
plot(f,C(1:n/2));
 


Auf der Y-Achse habe ich dann ja immer noch mm/s, oder seh ich das falsch?

Und auf der X-Achse sollte ich ja eigentlich meine Frequenzen haben.
Meine Frage ist jedoch, wie skaliere ich die X-Achse richtig, damit ich auch die richtigen Frequenzen abgreife?

Ich habe eine Abtastfrequenz von 1200 Hz.

Interessant ist für mich eigentlich auch nur der Bereich von 1Hz-80Hz.

Wenn ich bei
Code:

die Zahlen verändere, bekomme ich ja immer wieder andere Ergebnisse für meine (maßgebenden) Frequenzen.

Kann mir wer auf die Sprünge helfen?
Private Nachricht senden Benutzer-Profile anzeigen


Muki_84

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2010, 17:15     Titel:
  Antworten mit Zitat      
hallo Lysop,

bin aktuell selber dabei mich in die FFT einzuarbeiten.

Daher weiß ich nicht ob meine Tipps hier richtig sind.

Trotzdem würde ich gerne 1-2 Anmerkungen geben:

Code:


Der Befehl linspace erzeugt dir einen Vektor von 1 bis n/2 in 600 Schritten.
Daher siehst du das deine X-Achse noch keine Frequenz-Achse ist.

Code:
f=fs/2*linspace(1,600,n/2);


ich würde dir Vorschlagen deinen Code mit der halben Abtastfrequenz zu multiplizieren. Nun erzeugst du vielfache einer Frequenz. Wenn deine Abtastfrequenz = 2*deiner Grundfrequenz ist, würdest du genau Vielfache deiner Grundfrequenz bilden. Die Schrittweite würde ich bei 1 belassen.
Code:
f=fs/2*linspace(1,1,n/2);



Kannst das ja mal testen.

Gruß,
Muki
 
Lysop
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 12.12.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2010, 19:35     Titel:
  Antworten mit Zitat      
hab mittlerweile eine andere Lösung gefunden:

Code:

...
n=length(M);
% M ist signal
% fft Rechnung
C=abs(fft(M,n));
C=C/n;
f=1200/n*(1:n);
subplot(2,1,2);
plot(f,C);
axis([0 80 0 max(C)*1.1]);
...
 



funktioniert soweit ganz gut. Allerdings habe ich immer einen Peak bei 0. Hab erfahren, dass das daher kommen kann, dass mein Signal noch nicht gefiltert ist...jetzt muss ich mich mal mit Hoch und Tiefpassfiltern auseinander setzen...[/code]
Private Nachricht senden Benutzer-Profile anzeigen
 
Muki_84

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2010, 22:40     Titel:
  Antworten mit Zitat      
Wie groß ist denn dein n?

Weil wenn dein n sehr groß ist, kann sein das dein f nicht passt.

Bin mir nämlich nicht sicher, ob es wirklich an der Filterung liegt, das du ein Peak bei 0 bekommst.

Der Peak soll ja eigentlich deine Grundfreguenz wiederspiegeln.

Nen Filter würde ich eher einsetzen, um Oberfrequenzen zu filtern. Die würden sich durch kleiner Peaks im Spektrum bemerkt machen.

So würde ich das aufjedenfall sehen.

Gruß,
Muki
 
Lysop
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 12.12.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2010, 22:46     Titel:
  Antworten mit Zitat      
ich habe 4,32 Millionen Messwerte.

Habe halt eine Stunde durchgemessen mit 1200 Hz Abtastrate.

Ich messe Erschütterungen und für mich interessant ist eh nur der Bereich von 1Hz - 80 Hz.

Aber ich habe ja auch nen weitren Peak bei 21 Hz...das würd ja alles irgendwie passen. aber halt bei allen Messungen einer bei genau 0....

Blick bei der ganzen Sache kaum mehr durch, weil ich mich noch nie mit Signalverarbeitung beschäftigt habe und ehrlgich gesagt keine Ahnung habe, wie ich mein Signal richtig filtere...Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.