X-No-Archive: Yes
begin Text
Hallo,
ich bitte die dumme Frage zu entschuldigen: ein IIR-Filter ist doch genau dann stabil, wenn alle Pole (= Nennernullstellen) innerhalb des Einheitskreises kiegen, richtig?
Hintergrund: ich will Filter "auf die faule Tour" durch lineare Regression "entwerfen" - ich gebe ein Eingangs- und ein Ausgangssignal vor und lasse einen Approximationsalgorithmus (Tabellenkalkulation) solange an den Filterkoeffizienten drehen, bis das Ausgangssignal bestmöglich fittet.
Problem: wenn ich einfach die Nennerkoeffizienten selbst variiere, kommen instabile Filter heraus - der Fit paßt zwar auf die Sample-Signale hervorragend (sie werden "gelernt"), aber bei einem anderen Eingangssignal läuft das System sofort numerisch weg (ist ja auch kein Wunder).
Und nun habe ich mir folgende Problemlösung überlegt:
Das Nennerpolynom läßt sich als Produktdarstellung aus Faktoren
F_i = 1 - 2 * r_i * cos phi_i * z^-1 + r_i^2 * z^-2
(und bei ungeradzahliger Ordnung ggf. aus noch einem Faktor
F_Re = 1 - a * z^-1
für eine reelle Polstelle bei z = a).
Wenn man das Produkt ausmultipliziert, müßte für r_i < 1 automatisch ein stabiles Filter herauskommen.
Um es dem Programm einfach zu machen, kann man dann noch
r_i = 1 / [1 + exp(a_i)] und cos phi_i = 1 / SQR(1 + b_i^2)
(und evtl. noch a = tanh(a_0))
setzen, und dann kann der Solver nach Belieben mit den a_i's und b_i's herumwirbeln, ohne daß das Filter instabil werden kann; die Zählerkoeffinzienten haben sowieso "Narrenfreiheit".
Ist da irgendwo ein Denkfehler drin?
Gruß aus Bremen Ralf