15.09.2009, 13:43
Beitrag #1
|
dimitri84
Astronaut
Beiträge: 1.496
Registriert seit: Aug 2009
2020 Developer Suite
2009
DE_EN
53562
Deutschland
|
Medianfrequenz aus einem FFT Spektrum berechnen
Hallo zusammen!
vorab: dieses Forum ist mir eine riesen Hilfe und ich hoffe am Ende meines Trainy (1 Jahr gehts) auch etwas zurück geben zu können ... davon bin ich aber noch weit weg.
Mein aktuelles "sub"-Problem befasst sich mit der Berechnung der Medianfrequenz (manche nennen sie auch Mittenfrequenz) aus einem FFT Frequenzspektrum. (Die Medianfrequenz ist genau die Frequenz, die die Fläche unterhalb eines Frequenzspektrums in 2 gleich große Teile teilt.) Mit MatLab (offline) war es kein Problem aber in LV bin ich mir sehr unsicher, weil ich nie sehe/verstehe wie mir die Daten grade zur Verfügung stehen.
Prinzipiell will ich folgendes umsetzten:
1) Signal kommt aus einer Datei (4 Kanäle, Sampling rate 1kHz)
2) FFT
3) Spektrum wird integriert (will ja die Fläche haben)
4) suche nach der Frequenz wo die halbe Fläche des Spektrums liegt
Frage zu:
1) Ich benutze die "Messwerte aus Datei lesen".vi ... wenn ich dort einstelle "Segmente bestimmter Größe abrufen: 512" ... muss ich mir das so vorstellen, dass ich dann fortlaufend Vektoren der Größe 4x512 bekomme ... und alle anschließenden VIs bekommen die Daten dann auch in solchen Paketen?
2) Wie mach ich das für meine Zwecke am besten? Ganz von Hand? Derzeit benutze ich: Signalverarbeitung -> Signalverlaufsmessungen -> Spektrummessung.vi ... muss ich da bei den Einstellungen was bestimmtes beachten?
4) Mache ich das richtig in meiner hochgeladenen mf_sub.vi? (Glaub ich nämlich nicht.)
mf.vi (Größe: 170,65 KB / Downloads: 362)
mf_sub.vi (Größe: 36,88 KB / Downloads: 286)
daten.zip (Größe: 993,74 KB / Downloads: 460)
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
|
|
|
16.09.2009, 08:59
Beitrag #2
|
|
|
16.09.2009, 15:25
(Dieser Beitrag wurde zuletzt bearbeitet: 16.09.2009 15:26 von Lucki.)
Beitrag #4
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Medianfrequenz aus einem FFT Spektrum berechnen
Habe mirs mal angesehen, das fiel mir auf:
1.) Die Bekommst als Ergebnis einen Array-Index i heraus. Der ist aber nicht gleichzusetzen mit einer Frequenz. Es gilt:
Frequenz = fo + i * df
Bei dier ist ca. df = 1.95, f0 = 0
2,) Wenn Du mit der Konstante 5 im SubVI beabsichtigt haben solltest, die ersten 5 Frequenzen von der Berechnung auszuschließen, dann ist das gründlich schiefgegangen. Du müßtest diese Frequenzen schon vor der Integration entfernen und dann bei der Mittenfrequnzberechnung berücksichtigen, daß f0 in obiger Formel nicht mehr 0 ist.
|
|
|
16.09.2009, 15:47
(Dieser Beitrag wurde zuletzt bearbeitet: 16.09.2009 15:57 von dimitri84.)
Beitrag #5
|
|
|
16.09.2009, 18:28
(Dieser Beitrag wurde zuletzt bearbeitet: 16.09.2009 18:31 von Lucki.)
Beitrag #6
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Medianfrequenz aus einem FFT Spektrum berechnen
' schrieb:Warum ist df =1.95? Ich dachte wenn ich ne Sampling Rate von 1024Hz habe und mir Blöcke von 512 Werten hole, bekomme ich automatisch ein Spektrum mit 512 diskreten Frequenzn und der Auflösung df=1Hz. ... Abtasttheorem und so ...
Was Du hast, sind 512 Abtastwerte mit dt=0.001s.
Bei der Fouriertransfomation bekommst Du auch wieder 512 Werte heraus, und zwar hier bei Dir 256 Beträge und 256 Phasen (Die Du nicht benutzt). Dein Glaube, daß Dein Frequenzgraph 512 Frequenzen enthält, ist falsch.
Zur Skalierung: Ja, Nyquist gilt, aber beim Nyquist-Theorem geht es darum, welch höchste Frequenz man bei einer gegebenen Abtastrate noch darstellen kann. Es geht nicht um die Auflösung df. Also: man braucht mindestens 2 Abtastpunkte zur Darstellung einer Freqeunz. Hier bei Dir heißt das: Die höchste darstellbare Frequenz ist 1/(2*0.001s) = 500Hz.
Die 256 Abtastpunkte sind innerhalb der 500Hz gleichmäßig aufgeteilt, daraus ergibt sich df= 500Hz/256.
Das df laßt sich auch aus der Abtastlänge berechen. Sie beträgt 512*0.001s = 0.512s. Der Reziprokwert ist die erste Frequenz f1, die anderen Frequenzen sind Vielfache davon, d.h df=f1
Also merke: Wenn ein Diagramm eine x-Skalierung von 0..500 hat, dann müssen es nicht immer 500 Datenpunkte sein. Das ist nur bei dx=1 der Fall.
|
|
|
16.09.2009, 19:26
Beitrag #7
|
BeFu
LVF-Gelegenheitsschreiber
Beiträge: 84
Registriert seit: Jun 2006
2011
2006
DE_EN
96450
Deutschland
|
Medianfrequenz aus einem FFT Spektrum berechnen
Hallo Dimitri,
bin erst gegen 20:00 Uhr aus dem Labor gekommen und habe meine Antwort-Mail leider zerschossen, so schreibe ich Dir hier.
Die Ausführungen von Lucki stimmen.
Normalerweise haben EMG-Verstärker eine Bandbreite von 10Hz bis 500Hz.
Die in Deinem Spektrum sichtbaren Frequenzanteile von unter 10Hz kommen wahrscheinlich durch den Aliasing-Effekt, da der Tiefpass (500Hz) des EMG-Verstärkers auch höhere Frequenzen passieren lässt, so dass das Abtasttheorem verletzt ist.
Die tiefen Frequenzen filterst Du am Besten mittels Tiefpass weg, vor dem Integrieren.
Schöne Grüße,
BeFu
|
|
|
16.09.2009, 20:04
Beitrag #8
|
|
|
17.09.2009, 08:24
Beitrag #9
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
Medianfrequenz aus einem FFT Spektrum berechnen
' schrieb:Zum Anti-Aliasing: Werd mir nochmal ganz genau das Handbuch vom EMG-Gerät anschauen ... ist nämlich Marke Eigenbau ... also im Auftrag des Instituts extra gebaut worden.
Es ein Irrglaube anzunehmen, daß, wenn man aus einem Zeitverluf das Spektrum ermitteln will, die Abtastrate gemäß dem Nyquist-Theorem ausreichend ist. Konkret: Daß, wenn man 0-500Hz sehen will, eine Abtastrate von 1kHz ausreichend ist. Um Aliasing zu vermeiden, braucht man einen Tiefpass im Abnalgsignal vor der Abtastung, und der müßte in diesen Fall bei 500Hz liegen und unendlich scharf sein. Einen solches Filter gibt es aber nicht.
Ich nehme immer die mindestens 4 fache Abtastfrequenz (Hier wären das 2kHz). Dann sind die Anforderung an das Filter viel geringer, und bei genügend hoher Überabtastung erübrigen sich meistens Filter, weil in der Regel die hohen Frequenzen, die Aliasing verursachen könnten, im Originalsignal gar nicht mehr vertreten sind.
Also noch mal ein Beispiel: 8 fache Abtstrate = 4 kHz. Die Anforderungen an das Filter sind dann: Bis 500 Hz alles durchlassen, ab 2 kHz (Nyqist-Frequenz) sperren. Also nur geringe Anforderungen. Und das Filter wird nur dann gebraucht, wenn diese hohen Frequenzen überhaupt noch vorkommen. Wenn z.B. in dem Gerät schon ein Filter eingebaut ist, dann brauchts Du gar nichts mehr.
Übrigens: Versuche gar nicht erst, Aliasing im Nachhinein zu beseitigen. Das geht nicht.
|
|
|
| |