Hallo allerseits,
Ich bräuchte etwas Hilfe bei meiner latenten Mathe-Schwäche: ich weiss
einigermaßen wie ich mit GNU Octave einen IIR-Filter berechne, leider
weiß ich nicht was ich mit dem Ergebnis mache, bzw. wie ich das in
C-Code gieße...
Ich hab mal klein angefangen mit einem Butterworth und Bessel 1.
ordnung:
1 | octave:1> [b,a] = butter (1, 0.1)
|
2 | b = 0.13673 0.13673
|
3 | a = 1.00000 -0.72654
|
4 |
|
5 | octave:2> [b,a] = besself (1, 0.1, 'z')
|
6 | b = 0.13673 0.13673
|
7 | a = 1.00000 -0.72654
|
Schon mal beruhigend, dass das gleiche rauskommt :-)
Die Werte sind ja Koeffizienten des Zähler/Nenner Polynoms der
Übertragungsfunktion (hoffe ich zumindest, hier wird mein Eis schon sehr
dünn)
Nur - was mach ich jetzt damit?
ich suche dann ja was in der Art:
1 | float IIR(float x)
|
2 | {
|
3 | v[0] = v[1];
|
4 | v[1] = 0.245 * x + 0.51 * v[0];
|
5 | return v[0] + v[1];
|
6 | }
|
Wie komm ich von A nach B? (Ich will nicht die ganze hehre Mathematik
dahinter verstehen, ein "kochrezept" reicht mir)
Danke, Michi