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

Hilfe bei Frequenzanalyse

 

Richmand
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2010, 23:19     Titel: Hilfe bei Frequenzanalyse
  Antworten mit Zitat      
Hi,

ich habe folgendes Problem: Ich habe eine Reihe von Signalen und soll über einen gewissen Zeitraum die Frequenzänderungen bestimmen.

Zuerst habe ich die Signale in geeignete Zeitfenster unterteilt und über jedes Fenster eine FFT gebildet. Da ich noch relativer Neuling auf dem Gebiet bin, habe ich mir sagen lassen, dass ich die Frequenzen aus den zugehörigen Plots lesen kann. Leider bin ich dabei auf Probleme gestoßen, bzw. eigentlich weiß ich gar nicht so genau wie ich das anstellen soll.

Hier zunächst mein Algorithmus zum Erzeugen der FFT:
(die Daten werden aus einer Datei und dort aus dem Struct "epoch" gelesen)

Code:

%Initialize variables
FREQ = epoch.srate;                         % Sampling frequency
LEN = length(epoch.dat);                   % Data length
DATA = epoch.dat(23,:,123);             % Data (channel, all data, epoche)

% Prepare fft
NPOW = 2^nextpow2(LEN);            % Next power of 2 (data length) for fft

% FFT
fftVAL = fft(DATA,NPOW)/LEN;            % Calculates fft

%Skalierung der x-Achse und der zugehörigen Werte auf 1/4 der Samplingrate, da aufgrund von Filterung (Bandpass 0,5-200Hz) nur hier Frequenzen zu erwarten sind
xSCALE = FREQ/4*linspace(0,1,NPOW/4);     %Scale of x-axis
yAMPL = 2*abs(fftVAL(1:NPOW/4));

%Plot FFT
plot(xSCALE,yAMPL);  % Plot fft
 


Im Anhang habe ich drei Plots meines Vorgehens angehängt. Der Erste entspricht der reinen FFT (samplingrate 1000 Hz), der Zweite ist der Betrag der FFT-Werte und der Dritte ist eine Reduzierung des Spektrums auf den relevanten Bereich (entspricht dem oben gezeigten Code).

Ich habe noch eine vierte Grafik eingefügt, bei der eine Überlagerung von zwei Zeitfenstern zu sehen ist, aus dem ich theoretische eine Frequenzänderung (von blau nach grün) bestimmen soll.

Und nun noch mal meine Frage, wie kann ich aus dem (dritten oder vierten) Plot alle enthaltenen Frequenzen rauslesen, bzw. gäbe es evtl eine bessere Methode für diese Art von Aufgabenstellung?

4.jpg
 Beschreibung:

Download
 Dateiname:  4.jpg
 Dateigröße:  91.96 KB
 Heruntergeladen:  1155 mal
3.jpg
 Beschreibung:

Download
 Dateiname:  3.jpg
 Dateigröße:  47.96 KB
 Heruntergeladen:  1098 mal
2.jpg
 Beschreibung:

Download
 Dateiname:  2.jpg
 Dateigröße:  42.23 KB
 Heruntergeladen:  1156 mal
1.jpg
 Beschreibung:

Download
 Dateiname:  1.jpg
 Dateigröße:  43.4 KB
 Heruntergeladen:  1106 mal
Private Nachricht senden Benutzer-Profile anzeigen


steffi
Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 07.03.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2010, 13:11     Titel: Wasserfalldiagramm?!
  Antworten mit Zitat      
Wie viele Zeitfenster hast du denn?

ich habe oft 100 oder mehr Zeitfenster. Dafür habe ich mir dann im prinzip so wie bei dir eine Matrix mit 100 Zeilen geschrieben, die Spalten enthalten dann die FFT-Werte.

Dann stellte ich das ganze über contourf oder surf -Befehl dar. Dann werden deine FFT-Werte/Amplituden farbskaliert gezeigt (z-Achse). Auf einer Achse des Diagramms ist die Frequenz und auf der anderen die Zeit(-fensteranzahl). Dann kannst du an der Änderung der Farben erkennen, wie sich das Spektrum mit der Zeit ändert. Also ob sich ein Peak zu einer höheren Frequenz verschiebt.

Wenn du weniger Zeitfenster hast, oder zeitlich nicht so dicht aufeinander folgende, würde ich ein Wasserfalldiagramm (waterfall) empfehlen. Da wird dann jedes Spektrum für sich im 3D-Diagramm aufgetragen. Änderungen solltest du auch dann sehen können.

Wenn du noch Fragen hast, nur zu. Es ist wirklich schwierig zu verstehen, wie man eine zeitliche Änderung im Frequenzbereich sehen soll Confused
_________________

Wenn ich bei der Arbeit mit Computern eins gelernt habe dann das ich einem Computer nur soweit traue wie ich ihn werfen kann.
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.