Hallo ihr lieben,
ich habe ein Problem mit Butterworth Filter, nach dem Filtern habe ich immer 0 als Anfangswert, was eigentlich nicht zu meinen Werte gehört.
2 Problem tritt bei der Ableitung auf, es wird immer am Ende der Kurve eine Gerade dargestellt. im Anhang ist das Programm und ein Screenshot.
weiß Jemand woran das Problem liegt?
viele Grüße Amina
Zwecks Ableitung, ist dir schon mal der Sprung in deinen Daten ganz am Ende aufgefallen?
[
attachment=38333]
Da springt der Wert von ca. -70 auf ca. -35 innerhalb von 1 ms.
Das ist eine ganz ordentliche Steigung.
Gruß, Jens
Das ist kein "Problem", sondern eine Grundeigenschaft jedes "Tiefpassfilters im energielosen Anfangszustand" (Analogtechnik -> "energielos" = Digitaltechnik -> "rückgesetzt") . Er hat zur Zeit t=0 den Ausgangwsert 0 hat und ändert diesen Wert nicht sprunghaft, sondern stetig.
Um das zu ändern gibt es zwei Mögloichkeiten:
1. Du subtrahierst das Arrayelement 0 vom Array, so dass der Array mit dem Wert 0 beginnt, und addierst den Wert nach der Filterung wieder.
2. Du hängst an das Array noch genügend viele Werte des Arrayelementes 0 vor dem Array an, so daß der Filter die Gelegenheit hat, sich auf diesen Wert einzuschwingen. Nach der Filterung die Werte wieder entfernen.
Deine gewählte Grenzfrequenz von 0.125 Hz ist übrigens absurd niedrig. Da reicht nicht mal die Diagrammlänge von 5 sek aus, um sich einzuschwingen.
Hi Lucki vielen dank für deine Hilfe.
die Grenzfrequenz muss 6,14 Hz gewählt werden, aber die 2 Möglichkeit habe ich leider nicht verstanden, und die erste Möglichkeit klappt leider nicht
Viele Grüße
Was Lucky sagen möchte ist folgendes:
Du benutzt zunächst Index Array und holst dir somit das erste Arrayelement (dein erster Wert). Danach benutzt du die Funktion "In Array einfügen" und fügst dieses erste Arrayelement mehrfach an der ersten Stelle deines Array ein. Somit ermöglichst du dem Filter, dass er sich auf den Anfangswert einschwingt. Nach der Filteroperation musst du natürlich die Anzahl Elemente, die die vor dem Filtern eingefügt hast auch wieder aus dem Array entfernen. Somit wird verhindert, dass du am Anfang einen Sprung in der Kurve hast.
EDIT: Beispiel siehe unten.
MfG Carsten
Ich danke euch, das hat wunderbar funktioniert.
Grüß Amina
Gut, aber wieso die erste Möglichkeit nicht funktionieren soll, verstehe ich nicht:
[
attachment=38349]
Hi Lucki die beider Möglichkeiten funktionieren super, bei der ersten Möglichkeit hatte ich ein Fehler gemacht, deswegen dachte ich mir, es funktioniert nicht, also deine beide Vorschläge funktionieren einfach wunderbar, noch mal vielen vielen dank Lucki .
Gruß Amina