FFT in Matlab zur Frequenzanalyse einer EMG Messung

OP #761888
hallo,

ich habe ein EMG-Signal, bei dem ich mir gerne das Frequenzspektrum 
(fft)(mittels matlab) anschauen möchte. Mein Signal wurde 15 sek lang 
aufgenommen bei einer fs=1000Hz.

mein code für die fft lautet wie folgt:

points=4096;
Y = fft(WERTE(:,k),points);
Pyy = Y.* conj(Y) / points;
f = 1000*(0:(points/2)-1)/points;
plot(f,Pyy(1:2049));

jetzt mein problem/frage:

wovon hängt die größe (anzahl der points) der fft ab, bzw. wie wähle ich 
sie am besten um eine ordentliche Darstellung meines Signals zu 
bekommen?
ausserdem habe ich gelesen, dass es sinnvoll ist das ganze durch eine 
Fensterfunktion zu schicken. Aber welches nehme ich da, bzw. was macht 
die, oder wie verändert sie mein Signal? (und wie setze ich das mit 
matlab um)--> kann ich diese Fensterfunktion auch verwenden um 
harmonische schwingungen zu unterdrücken bzw. um das rauschen zu 
unterdrücken???

ich hoffe ihr könnt mir weiterhelfen.
mfg Sebastian
(http://de.wikipedia.org/wiki/Elektromyografie
ich nehme an, das ist mit EMG gemeint?
War das noch einfach mit "rußgeschwärzten Trommeln" zur Aufzeichnung.)

zu den verschiedeen Fenstern gibts auch was von Wikipedia
http://de.wikipedia.org/wiki/Fensterfunktion
mit "ganz ohne Fenster" oder auch Rechteckfenster ist es jedenfalls am 
schlechtesten. Es geht um Artefakte, nicht um Rauschen oder Harmonische.
OP
hallo
ja mit emg ist electromyographie gemeint. Ja du hast recht es geht um 
artefakte, aber ist rauschen nicht auch ein artefakt? danke das mit den 
fenstern werd ich mir gleich reinziehen, ist aber nicht vorrangig.

mir geht es eher um die genauigkeit meiner fft. welche muss ich wählen 
um ein signal mit 15000 werten optimal in den frequenzbereich zu 
bekommen. muss ich da eine 512 1024 2048 4096 .... punkt fft machen?? 
und wie hängt diese auswahl dann mit meiner Fensterfunktion zusammen/ 
oder nicht??


danke
mfg Sebastian
Admin Persönliche Seite
Ich nehme an du willst nicht das Spektrum des gesamten Signals anschauen 
(da wirst du nicht viel erkennen), sondern ein gemitteltes Spektrum über 
einen gewissen Zeitraum? Dazu musst du die FFT auf kleine Blöcke 
anwenden und über das Ergebnis mitteln. Schau dir die Funktion pwelch 
an, die nimmt dir diese Arbeit ab. Als Parameter kannst du optional die 
FFT-Länge und die Fensterfunktion vorgeben.
Gast
Vielen dank für die antwort, werde mich gleich am wochenende damit 
beschäfftigen.
Heißt das so bekomme ich das mittlere Leistungsdichtespektrum, nach 
Zerstückelung, Überlappung, Fensterung???? und geht dabei information 
verloren??? Das heißt am ende habe ich das Leistungsdichtespektrum der 
ganzen 15 sek. aber nicht alles auf einmal sondern gemittelt über kleine 
Blöcke?? Und was sind dann die richtigen einstellungen für die Blöcke? 
oder ist das egal?

vielen dank für die antwort, ich hoffe du kannst mir noch weiterhelfen.
mfg Sebastian


PS: ersetze ich

Y = fft(WERTE(:,k),points);
Pyy = Y.* conj(Y) / points;

durch pwelch???
Gast
hi Leute ich muss die M-Welle von der Willkürliche EMG Welle detektieren 
und separieren mit silab oder mit Matlab, könnte ich vielleicht eine 
Hilfe bekommen danke im Voraus
Nadhmi

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.