LabVIEWForum.de
IIR-Notch-Filter 50Hz - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: IIR-Notch-Filter 50Hz (/Thread-IIR-Notch-Filter-50Hz)



IIR-Notch-Filter 50Hz - JaDa - 23.11.2012 14:25

Hallo Leute,

ich sende die Rohdaten meines EKG-Signals an LabVIEW um es zu filtern.

Jetzt habe ich um die 50-Hz Netzeinflüsse herauszufiltern einen IIR-Notch-Filter implementiert. Dazu habe ich den Block aus der
Palette Signalverarbeitung --> Filter --> Fortgeschrittene FIR-Filterung --> IIR-Filter genommen und die Koeffizienten habe ich
mit Matlab berechnet.

Ich wundere mich jetzt, dass das gefilterte Signal überhaupt keine Änderungen aufweist gegenüber dem ungefilterten Signal.
Auch wenn ich den Block IIR-Filter öffne während das Programm läuft und mir dann da die Werte "X" und "gefiltertes X" anschaue, sind diese
identisch.

Ich habe noch nicht ganz verstanden wie der IIR-Block funktioniert da so ein Filter ja die Werte X(k), X(k-1), X(k-2), Y(k-1), Y(k-2) benötigt.
Merkt er sich diese selber?

Ich habe zwischen meine Werte X und dem Filter einfach den Block "Array erstellen" gepackt und damit bekommt der Filter ja immer nur
den aktuellen Wert.

Ich habe mein VI unten angehängt.

http://www.labviewforum.de/images/smilies/lvfsmilies/lv_icons/lv09_img2.jpg


RE: IIR-Notch-Filter 50Hz - GerdW - 23.11.2012 14:43

Hallo JaDa,

Zitat:Ich habe noch nicht ganz verstanden wie der IIR-Block funktioniert da so ein Filter ja die Werte X(k), X(k-1), X(k-2), Y(k-1), Y(k-2) benötigt.
Genau, der "Block" erwartet ja auch ein Array am Eingang...

Zitat:Merkt er sich diese selber?
Nö, das musst du schon selbst machen...

Dein Bit-Geschubse ist wirklich phänomenal. Und das ganze auch noch für 4 Bytes zu kopieren statt eine Schleife oder wenigstens ein subVI zu nutzen:
[attachment=42334]


RE: IIR-Notch-Filter 50Hz - JaDa - 23.11.2012 15:12

Vielen Dank GerdW!!

Das habe ich mir schon gedacht.

Eine Frage habe ich aber noch:

In der Beschreibung steht: X ist das Eingangsarray mit den zu filternden Werten

Muss ich dem IIR-Filter.VI jetzt also nur die Eingangswerte X(k), X(k-1), X(k-2) zur Verfügung stellen oder auch Y(k-1), Y(k-2) ?

Aus der Erklärung ist mir das nicht so ganz ersichtlich.

----
Ja ich weiß, ist etwas umständlich gemacht! Ich habe auch noch nicht so viel Erfahrung mit LabVIEW....und es funktioniert! =)


RE: IIR-Notch-Filter 50Hz - Lucki - 24.11.2012 18:15

Kleine November-Sonnabend-Beschäftigung, um das "Bit-Geschubse" weiter zu vereinfachen:
[attachment=42345]


RE: IIR-Notch-Filter 50Hz - Lucki - 25.11.2012 09:01

Die Filterfunktionen von Labview (Butterworth, Bessel, ..) erlauben alle die Konfiguration als Sperrfilter, da muss man sich doch nicht von Matlab irgendwelche IIR-Filterkoeffizienten ausborgen.
Bei 1. Ordnung ist es egal ob Butterworth oder Bessel
Beispiel:
[attachment=42352]
Erläuterung zum VI:
Frequenzgang = Fouriertransformierte der Gewichtsfunktion
Gewichtsfunktion: Antwort auf Nadelimpuls-Input