Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich habe ein Signal (1 Hz). Nun will ich das Signal mit Tiefpass und Hochpass filtern um bestimmte Ereignisse im Signal zu identifizieren. Hochpassfilter zeigt ja immer nur die Änderungen des Signals, damit kann ich z.B. mit einer Schwelle eine plötzliche Änderung im Signal detektieren.
Das Problem dabei ist, dass die Filter eine Bestimmte Zeit brauchen um einzuschwingen. Wie kann ich die Filter direkt mit dem ersten Sample einschwingein lassen, so dass die Filterungnicht bei Null anfängt, sondern beim ersten Sample?
Also das lässt mir doch keine Ruhe. Ich habe es durch ein Workarround gelöst, und zwar habe ich um den Filter auf eine bestimmte Größe zu setzen den Filter in einer Forschleife mehrmals durchlaufen lassen. Es ist also so, als ob er schon lange Daten gesammelt hat und schon eingeschwungen ist.
Gibt es eine Möglichkeit direkt die Filterkoeffizienten so zu ändern, dass er sich auf eine bestimmte Größe setzt, oder gibt es andere Möglichkeiten den Filter richtig einschwingen zu lassen ohne lange zu warten?
so weit ich weiss, ist es ein häufig genutztes Verfahren, ein Signal z.B. zu spiegeln, um ein Einschwingen eines Filters zu ermöglichen. Soweit ich verstehe, entspricht das im Prinzip deinem Vorgehen.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
so weit ich weiss, ist es ein häufig genutztes Verfahren, ein Signal z.B. zu spiegeln, um ein Einschwingen eines Filters zu ermöglichen. Soweit ich verstehe, entspricht das im Prinzip deinem Vorgehen.
Gruß, Jens
:hmm:was meinst du mit "spiegeln"?
Man sagt dass es in Matlab oder PSpice und ähnliches ganz einfach durch Init-Koeffizienten zu lösen ist.
Also, ich gehe bei meiner Antwort davon aus, dass du ein Signal aufgezeichnet hast, und erst "offline" filterst. Spiegeln ist wirklich bildlich zu verstehen, du invertierst dein Daten-Array und setzt es vor den Anfang deiner "realen" Daten. Dann wendest du auf dieses künstlich verlängerte Signal deine Filterung an. Analoges am Ende des Signals, wenn du einen phasenkorrekten Filter hast.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Aber wenn ich richtig verstehe, machst du doch im Prinzip nichts anderes?! Anfang des Signals ein paar mal zum Einschwingen verwenden, entspricht doch dem Spiegeln beim Offline-Filtern. Oder sehe ich das jetzt falsch?
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Ja, ich habe gedacht, dass es ein Workarround ist, denn wenn die Zeitkonstante beim Tiefpass sehr groß ist, dann muss ich sehr oft den Filter durchlaufen lassen, damit er einschwingt. Das nimmt bei drei zu filternden Größen pro Gerät und 40 Geräten viel CPU und Zeit. Aber ohne Einschwingen kann ich meine Schwellwertalgorithmen nicht anwenden, denn die werden spinnen. Ohne Filter geht es auch nicht, denn das Signal zu stark rauscht.
Ich denke also man kann es mit dem Setzen der Forwärts- und Rückwärts-koeffizienten des Filters in einem Aufruf erledigen.