Forum: Digitale Signalverarbeitung / DSP / Machine Learning FFT in Matlab zur Frequenzanalyse einer EMG Messung


von Sebastian H. (sebihain)


Lesenswert?

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

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

(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.

von Sebastian H. (sebihain)


Lesenswert?

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

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

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.

von sebihain (Gast)


Lesenswert?

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???

von Nadhmi (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.