Servus pic32,
weiß nicht, ob noch Bedarf besteht - ich poste trotzdem mal einfach einen möglichen Lösungsweg (vielleicht ists auch für andere aktuelle / zukünftige Projekte interessant).
Bei FIR-Filtern ist die numerische Berechnung sehr einfach: eine inverse FFT der gewünschten Übertragungsfunktion führt auf die Koeffizienten (= Impulsantwort des Filters).
Für IIR-Filter habe ich keine numerische Berechnung parat (ich nehme an, du willst verschiedene Filterparameter ändern und die neuen Koeffizienten bekommen), dafür aber eine symbolische (erfordert zuvor aber einigen Rechenaufwand "per Hand"):
Du nimmst die s-Übertragungsfunktion des Filters, für Butterworth einer bestimmen Ordnung also sowas ähnliches wie(mit
). Dann transformierst du diese Funktion in den z-Bereich (mit der Z-Transformation). Hier geht das ganz einfach, du brauchst nur alle 's' (die in der Wikipedia-Formel 'p' heißen) durch die sog. Tustin-Approximation 2/T*(z-1)/(z+1) ersetzt.
Dann müsstest du nur mehr die entstandene Formel auf die Form
bringen und könntest per Koeffizientenvergleich Beziehungen für die einzelnen Filterkoeffizienten ableiten, die du dann im Programm einbauen kannst.
Zugegeben - eine etwas schwerfällige Methode (vor allem wenn man den Filtertyp nachträglich ändert), sollte aber funktionieren (oder?)...
Schöne Grüße
Lesezeichen