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