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?
> 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.
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?
Manfred hat Recht, du brauchst minus statt plus in der Rückkoppelung. Sagt die Website die du referenziert auch im Artikel über die biquads. Bezeichnung ist ungewöhnlich, alle Welt nennt die rueckkoppelcoeff a und die anderen b. Cheers Detlef
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.
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.
> 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.
Audio Hans schrieb: > Richtig, bezogen auf meine Formel oben muss man alle Beiträge ausser dem > ersten abziehen. Dann passt es. > Nein, nur die beiden letzten abziehen, die vorfaktoren der y(n-1) y(n-2). Cheers Detlef
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.