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, Datenlage und mein Versuch Periodizität zu entdecken

 

HellGrueneBlaetter

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2009, 14:21     Titel: FFT, Datenlage und mein Versuch Periodizität zu entdecken
  Antworten mit Zitat      
Liebes Forum,


ich habe zwei Fragen zum Thema FFT, die mich gerade beschäftigen und über deren Beantwortung ich mich sehr freuen würde. Gerne auch nur eine Frage.

1. Grundsätzlich: Ich versuche gerade meine Daten auszuwerten und zu bestimmen, ob hier eine Periodizität oder ein Grundrhythmus vorliegt; aber langsam kommen mir die Zweifel, ob ich überhaupt genügend Daten besitze, um diese Frage beantworten zu können. Bei 42kHz sampling-rate habe ich ca. 100.000 Werte aufgenommen, 99.8% davon besitzen den Wert "0", 0.2% den Wert "1"(=Spike). Kann ich mit dieser Datenlage überhaupt etwas über Frequenzen im Bereich von 20-100Hz (mein Ziel) aussagen?


2. Speziell: Wonach bemesse ich die ideale Anzahl der zu verwendenen FFT-Punkte (=Frequency-Bins=Number of FFT points)? Derzeit verwende ich zu Vergleichzwecken sowohl "Hann", "Hamming", als auch ein ganz normales "Rectangular" Zeitfenster für die FFT. Doch ich habe bemerkt, dass mein Ergebnisgraph wirklich sehr, sehr stark von der Anzahl der verwendeten FFT-Punkte abhängt, so dass ich nicht sagen kann, ob ich gerade ein FFT-Window-Fragment sehe, oder ein Signal?

Um zu überprüfen, ob mein Code überhaupt richtig ist, habe ich ein künstliches, reines Signal zu 50Hz generiert, welches nicht zu jeder Periode erscheint. Mein Code identifizierte zwar das Signal korrekt, aber jede Zeitfenstermethode selbst zeigte sich (mit jeweils verschiedenen Frequenzen) periodisch über das gesamte Spektrum verteilt, abhängig davon, wie ich die Anzahl der zu verwendenen FFT-Punkte(=Frequency bins) legte.

Nun bin ich verwirrt und würde mich über ein paar Stupser in die richtige Richtung freuen.


derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 27.11.2009, 16:54     Titel:
  Antworten mit Zitat      
Hi,

das sind alles normale Effekte die du da beschreibst. Du könntest auch stattdessen mal Kreuzkorrelation versuchen, vielleicht reicht das für deine Anwendung schon. Entweder mit xcorr(). Oder so:

Code:

r=zeros(100,1);
r(1:20:end)=1;
for k=1:100
a(k)=corr(r(1:end-k),r(k:end-1))
end
plot(a)
 


Ansonste poste mal einen lauffähigen Code mit deinem Testsignal und der fft.

Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
HellGrueneBlaetter

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2009, 14:30     Titel: mein Code
  Antworten mit Zitat      
Wenn ich die for-loop nur bis 99 (mit 100 ergibts n error) laufen lasse, dann ergibt sich interessanter Weise folgender Unterschied zwischen Deinem Code mit "corr" und der einfachen Anwendung "xcorr" (ohne ergänzenden Code): corr (mit deinem Code) zeigt Ausschläge an, die aber alle die gleiche maximale Amplitude haben, während xcorr stetig bis zum Nullpunkt wächst, um danach wieder abzunehmen (ok, Spiegelbild, wie erwartet).

Was sagt mir dieser Unterschied?


Bzgl. Postens meines Codes: Mein Code in der Originalfassung ist ziemlich sehr lang, umfasst mehrer m-files (da ich noch Anfänger bin) und besteht in der Hälfte aus einem Parser, damit ich das Datenformat des Signals aus einer Excel-Tabelle einlesen kann. Ich könnte natürlich das Original + DatenFile posten, wäre aber ganz schön lang. Daher werde ich erst einmal versuchen meinen Code abzuspecken und einen künstlichen Signalgenerator zu erstellen ... was zusammengenommen n bisschen dauern kann. Ich kann aber gerne auch den ganzen Code posten, vielleicht als zip-file?
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 30.11.2009, 14:54     Titel:
  Antworten mit Zitat      
Hi, mit der hundert das war auch nur ein Beispiel. Ich glaube der Unterschied kommt daher, dass xcorr halt bei dem 2. Vektor wieder vorne anfängt. Manchmal ist dies aber nicht sinnvoll und erforderlich, zum Beispiel in deinem Fall. Dann reicht es, wenn beide Vektoren immer kleiner werden, Sie sollten aber auch wiederum nicht zu klein werden weil es ja keinen Sinn macht die Korrellation von zwei sehr kleinen Vektoren zu berechnen.

In beiden Fällen sollte aber deine Frequenz sichtbar sein, nämlich der auftretende Peak, nach Null.

Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
HellGrueneBlaetter

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2009, 19:09     Titel: Beispielcode: FFT-Analyse mit/ohne Signal bei random noise
  Antworten mit Zitat      
Hallo Oli,

erst einmal vielen Dank für Deine Hilfe. Inzwischen habe ich sowohl eine FFT als auch eine xcorr in meinem eigentlichen Code zwecks Entdeckung von Periodizität.

Zu meinen beiden Frage aus diesem ersten Post hier mal eine sehr abgespeckte Version nur für FFTs; sie erstellt fünf verschiedene Graphen, wobei aus dem FFT-Spektrum nur ein bestimmter Ausschnitt von 0-200Hz angezeigt wird. Figures:

1. Noise only
2. (thinned) Signal only
3. Signal+Noise
4. FFT(Signal+Noise) - FFT(Noise)


((Dass ich das Testsignal ausgedünnt habe soll lediglich ein realistischeres Bild meiner tatsächlichen Messdaten simulieren.))

Beispiel-Aufruf:
Um eine zwei Sekunden langes Testsignal zu erstellen, welches mit 44.000Hz gesampelt wurde, dessen Frequenzspektrum auf 6*1024 bins aufgesplittet wird und dem als künstliches Signal eine auf 30% Auftretens/Persistens ausgedünnte(!) Frequenz von 30Hz aufoktruiert wurde, verwende folgenden Aufruf:

myFFTTest(6*1024,44000,2,0.0005,30,0.3)


HellGrueneBlaetter


P.S: Ich kann auch gerne meinen gesamten Code + Messdatenfile posten.

myFFTTest.m
 Beschreibung:

Download
 Dateiname:  myFFTTest.m
 Dateigröße:  10.6 KB
 Heruntergeladen:  957 mal
 
HellGrueneBlaetter

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2009, 14:06     Titel: FFT: wonach Anzahl der FFT-Punkte zu bemessen?
  Antworten mit Zitat      
Liebes Forum,

zu dem im letzten Post (s.o.) angehängten m-file habe ich noch immer zwei Fragen über deren Beantwortung ich mich sehr freuen würde.

1. Grundsätzlich: Ich versuche gerade meine Daten auszuwerten und zu bestimmen, ob hier eine Periodizität oder ein Grundrhythmus vorliegt; aber langsam kommen mir die Zweifel, ob ich überhaupt genügend Daten besitze, um diese Frage beantworten zu können. Bei 42kHz sampling-rate habe ich ca. 100.000 Werte aufgenommen, 99.8% davon besitzen den Wert "0", 0.2% den Wert "1"(=Spike). Kann ich mit dieser Datenlage überhaupt etwas über Frequenzen im Bereich von 20-100Hz (mein Ziel) aussagen?


2. Speziell: Wonach bemesse ich die ideale Anzahl der zu verwendenen FFT-Punkte (=Frequency-Bins=Number of FFT points)? Derzeit verwende ich zu Vergleichzwecken sowohl "Hann", "Hamming", als auch ein ganz normales "Rectangular" Zeitfenster für die FFT. Doch ich habe bemerkt, dass mein Ergebnisgraph wirklich sehr, sehr stark von der Anzahl der verwendeten FFT-Punkte abhängt, so dass ich nicht sagen kann, ob ich gerade ein FFT-Window-Fragment sehe, oder ein Signal? Gibt es da vielleicht eine Daumenregel?


Nun bin ich verwirrt und würde mich über ein paar Stupser in die richtige Richtung sehr freuen.
 
HellGrueneBlaetter

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.12.2009, 14:19     Titel: Re: FFT: wonach Anzahl der FFT-Punkte zu bemessen?
  Antworten mit Zitat      
Wie bestimme ich die ideale Anzahl der zu verwendenen FFT-Punkte (=Frequency-Bins=Number of FFT points)?

Ich weiß, dass die Anzahl der FFT-Punkte zusammen mit der Sampling-Rate die Frequenzbreite eines jeden bins ausmacht. Doch wie kann ich abschätzen, ob ich mich da in einem eher optimalen Bereich bewege und nicht viel zu viele oder viel zu wenige Punkte verwende?
 
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.