Problem mit biquad-Filter

Gast #4113011
Lesenswert?

Ich habe versucht einen einfachen biquad Filter zu bauen, komme aber mit 
den Koeffizienten nicht klar. Das filter fängt an zu schwingen. Ich gehe 
davon aus, dass ein Vorzeichen nicht passt.

Verwendet wird der Biquad Filter Coefficient Calculator:
http://www.earlevel.com/main/2013/10/13/biquad-calculator-v2/

Er liefert diese Koeffizienten:

a0 = 0.2513790015131591
a1 = 0.5027580030263182
a2 = 0.2513790015131591
b1 = -0.17124071441396285
b2 = 0.1767567204665992

Die einen lowpass filter darstellen sollen,

Ich bin mir aber über die Verwendung im Unklaren. Eigentlich sollte es 
so stimmen:

Y(n) = X(n)*a0 + X(n-1)*a1 + X(n-2)*a2 + Y(n-1)*b1 + Y(n-2)*b2

Klappt aber nicht. In dem Diskussionsthread im Artikel wird auch darauf 
verwiesen, dass unterschiedliche Konventionen verwendet werden. Wie muss 
ich die Koeffs nun anwenden?
#4113032
Lesenswert?

> In dem Diskussionsthread im Artikel wird auch darauf verwiesen, dass
> unterschiedliche Konventionen verwendet werden. Wie muss
> ich die Koeffs nun anwenden?

Ich habe zwar keine Ahnung, was genau ein Biquad-Filter ist, aber anhand 
der Koeffizienten wird es wohl ein IIR Filter sein.

Und da gibt es tatsächlich zwei unterschiedliche Sichtweisen. Ich bin 
bei meinen Experimenten kürzlich selber darüber gestolpert. Um das näher 
zu untersuchen, solltest Du uns mal deine Filter Routine Zeigen.

Es gibt da 2 unterschiedliche Sichtweisen. Einmal werden alle 
Rückkopplungswerte addiert und dann die Summe vom Eingangssignal 
Subtrahiert. Die andere Sichtweise kennt nur Additionen, da müsse dann 
ggf. die Vorzeichen der Rückkopplungswerte invertiert werden.

Genaueres kann man aber erst sagen, wenn der Filteralgorithmus bekannt 
ist. Bei Verwendung eines Ringpuffers für die Eingangsdaten kann es 
außerdem erforderlich sein, die Reihenfolge der Koeffizienten 
umzudrehen.
Gast #4113106
Lesenswert?

Die Reihenfolge ist es sicher nicht, aber Dein Einwand mit dem Abziehen 
könnte es sein - ich probiere das mal, wenngleich die ersten Werte 
eigentlich sinnvoll sind, wenn ich ein Dreieick einspeise: Es kommt eine 
Sichel, wie man sie erwartet, aber schon nach 10 Werten ist das Filter 
am schwingen.

Vielleicht ein Auflösungproblem?
Gast #4113136
Lesenswert?

Richtig, bezogen auf meine Formel oben muss man alle Beiträge ausser dem 
ersten abziehen. Dann passt es.

Allerdings beobachte ich noch Folgendes: Erhöht man die eingespeiste 
Frequenz über ein bestimmtes Mass, dämpft der Filter nicht mehr, sondern 
verstärkt die Amplitude allerdings mit stark abfallender Frequenz.

Könnte so ein Nyqusteffekt sein, denke ich.
#4113156
Lesenswert?

Ich habe Deine Daten jetzt einfach mal in mein Testprogramm eingegeben, 
wobei ich die Eingangsdaten meines Constructors für die Berechnung 
einfach ignoriert habe und statdessen Deine Daten direkt übernommen 
habe. Die Angaben im Einstellungspanel sind also nicht alle zutreffend, 
aber die Skalierung stimmt.

Also der Filter funktioniert, obwohl ich das als ziemlich lahm 
bezeichnen würde (siehe Anhang). Ich habe meinen Algorithmus kürzlich so 
umgestellt, dass er nur mit additionen arbeitet. Der Grund war, das ich 
den Algorithmus aus dem hier schon mehrfach zitierten DSP Guide 
verwende.

Mein neuer Algorithmus verwendet nur (noch) Additionen. Es werden also 
alle Rückkopplungswerte addiert und dann zum Eingangswert ebenfalls 
addiert (vorher hatte ich die Summe Subtrahiert).

Möglicherweise musst Du daher nur das Vorzeichen im Rückkopplungszweig 
umdrehen.
Angehängte Dateien:
#4113165
Lesenswert?

> Bezeichnung ist ungewöhnlich, alle Welt nennt die rueckkoppelcoeff a und
> die anderen b.
Das interessiert mich jetzt aber auch. Bisher sehe ich in den 
Internet-Quellen hierzu etwa ein 1:1 Verhältnis, ohne dass ich da eine 
Priorität erkennen konnte. Ich habe mir deshalb angewöhnt, mich an dem 
"fehlendem" Parameter (Index 0) zu orientieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren