LabVIEWForum.de
Nullphasenfilter im Onlinebetrieb - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Nullphasenfilter im Onlinebetrieb (/Thread-Nullphasenfilter-im-Onlinebetrieb)



Nullphasenfilter im Onlinebetrieb - dimitri84 - 23.10.2012 12:33

Hallo,

einen Filter ohne Phasenversatz hab ich soweit hinbekommen, wenn man den kompletten Signalverlauf auf einmal reinjagt. Im Onlinebetrieb, wenn also das Signal nur blockweise zur Verfügung steht, sieht es anders aus.

[attachment=41967]
[attachment=41968]

Geht das überhaupt? Den Nullphasenfilter gibt es auch nicht als Punkt-für-Punkt Variante ...



Gruß Dimitri


RE: Nullphasenfilter im Onlinebetrieb - Lucki - 23.10.2012 14:09

Nein, das geht nicht. Es gibt zu jedem Frequenzgang eine minimale frequenzabhängige Phasendrehung, die nicht unterschritten werden kann. Das Filter kann beliebig mehr Phasendrehung haben, aber nicht weniger. Jeder lineare Vierpol lässt sich zerlegen in eine Kettenschaltung (Hintereianderschaltung) eines "Minimalphasensystems" und eines "Allpasses" (=System mit Phasendrehung ohne Frequenzgang)
Die Minimalphasen-Bedingung im Frequenzbereich korrespondiert im Zeitbereich mit der Bedingung, das sich das System "kausal" verhalten muss: Das Ausgangssignal kann immer erst nachträglich auf ein Eingangssignal reagieren, nicht schon vorher.

Habe mal in Deinem VI statt des vorgegebenes Signal eine Sprungfunktion eingegeben. Dann kommt das heraus:
[attachment=41970]
d.h man hat ein Systemantwort vor dem Sprung - was im realen Leben nicht möglich ist.


RE: Nullphasenfilter im Onlinebetrieb - dimitri84 - 23.10.2012 14:32

(23.10.2012 14:09 )Lucki schrieb:  d.h man hat ein Systemantwort vor dem Sprung - was im realen Leben nicht möglich ist.
Das muss es auch nicht im realen Leben geben. Die digitale Welt reicht völlig.

Das Problem ist: ich habe zwei Signale - eins muss gefiltert werden, das andere (darf) nicht. Die resultieren Phasenverschiebung aus dem Filtern verfälscht mein Ergebnis beim verrechnen der Signale. Liegen die Signale komplett vor - kein Problem, siehe VI. Jetzt, und das ist der Unterschied zu damals, muss das auch online funktionieren.

Ich dacht mit den "Init-Anschlüssen" oder mit Anfangsbedingungen würde man das Problem in den Griff bekommen.


Danke für die Antowrt Lucki!

Gruß


RE: Nullphasenfilter im Onlinebetrieb - Lucki - 23.10.2012 16:10

(23.10.2012 14:32 )dimitri84 schrieb:  
(23.10.2012 14:09 )Lucki schrieb:  d.h man hat ein Systemantwort vor dem Sprung - was im realen Leben nicht möglich ist.
Das muss es auch nicht im realen Leben geben. Die digitale Welt reicht völlig.
Mit "realem Leben" meinte ich "in Echtzeit". Offline ist alles kein Problem.

Zitat:Das Problem ist: ich habe zwei Signale - eins muss gefiltert werden, das andere (darf) nicht. Die resultieren Phasenverschiebung aus dem Filtern verfälscht mein Ergebnis beim verrechnen der Signale. Liegen die Signale komplett vor - kein Problem, siehe VI. Jetzt, und das ist der Unterschied zu damals, muss das auch online funktionieren.
Ist doch kein Problem: Wenn die Verzögerung des gefilterten Echtzeit-Signals unvermeidlich ist, dann kann man doch zumindest das ungefilterte Originalsignal um die gleiche Zeit verzögern, so dass bei der Darstellung im Diagramm keine Zeitverschiebung zwischen den Plots sichtbar ist.
Gruß
Ludwig


RE: Nullphasenfilter im Onlinebetrieb - dimitri84 - 23.10.2012 16:24

(23.10.2012 16:10 )Lucki schrieb:  Ist doch kein Problem: Wenn die Verzögerung des gefilterten Echtzeit-Signals unvermeidlich ist, dann kann man doch zumindest das ungefilterte Originalsignal um die gleiche Zeit verzögern, so dass bei der Darstellung im Diagramm keine Zeitverschiebung zwischen den Plots sichtbar ist.

..."um die gleiche Zeit" ... Und die steht wo? Big Grin

Das wäre sicher ein möglicher Weg. Nur hängt die Phasenverschiebung von 1) Ordnung 2) Grenzfrequenz und 3) Eingangsignal ab. Das habe ich "damals" mit einer Kreuzkorrelation dann ganz ordentlich quantifizieren können (offline!). Das mit der Kreuzkorrelaton funktioniert aber nicht mit 50-Samples-langen Päckchen, von dem Overhead ganz zu schweigen.

Einfach um eine konstante (empirisch ermittelte) Zeitspanne verschieben, finde ich, nicht verkaufbar. Was wenn sich die Filterparameter ändern ...

Wahrscheinlich ist das kleinste Übel dann doch beide Kanäle zu filtern und damit zu leben.



Gruß Dimitri


RE: Nullphasenfilter im Onlinebetrieb - Lucki - 23.10.2012 16:52

Es geht hier nicht um Phasenverschiebungen, sonder um die Filterlaufzeit, und die hängt nicht vom Eingangssignal ab, sondern ist eine alleinige Eigenschaft des Filters.
Die Laufzeit eines TP ist so definiert: Sie ist der Schwerpunkt das Antwortsignals auf einen Nadelimpuls zurt Zeit t=0.
Die Signalverzögerung ist eindeutig mit den Filterkoeffizienten verknüpft und lässt sich aus ihnen berechnen. Für Labview wohl kein Problem. Nur weiß ich jetzt die Formel nicht.
In vielen Fällen hat man es aber nur mit immer unterschiedlichen Signalen zu tun, alles andere, also auch die Filtereinstellung, bleibt gleich. In diesem häufigen Fall tut es auch eine einmalige empirische Anpassung.


RE: Nullphasenfilter im Onlinebetrieb - dimitri84 - 23.10.2012 18:53

HA! Ich hatte nicht viel Hoffnung bei er Erstellung des Threads, aber Ludwig hat mich eines besseren belehrt. Ich denke das ist ein Ansatz den man umsetzen kann.

[attachment=41977]
[attachment=41978]

Die Schwerpunktsberechnung habe ich mir jetzt aus den Finger gesogen - werde ich nochmal recherchieren müssen. Aber der Wert ist durchaus plausibel (162 ms).

Super-Lucki hat wieder zugeschlagen. Sauber! Bin gespannt auf den Vergleich mit dem Nullphasenfilter um das Ganze zu validieren.



Gruß Dimitri


RE: Nullphasenfilter im Onlinebetrieb - dimitri84 - 23.10.2012 22:32

Funktioniert.

[attachment=41979]


RE: Nullphasenfilter im Onlinebetrieb - Lucki - 24.10.2012 08:24

Und die Probe stimmt auch: Bei einem einfachen RC-Glied (TP erster Ordnung) sollte die Laufzeit gleich der Zeitkonstanten sein, also
Td = 1/(2*pi*fg)
Macht bei fg=5Hz 31.8ms.
Übrigens: für die Erzeugung einen Nadelimpulses gibt es das VI "Impulse Pattern". Allerdings gehört das, wie man an Deinem Beispiel sieht, zu den eher entbehrlichen Funktionen.
Gruß Ludwig