Hallo, ich habe in Matlab ein IIR Filter entworfen. Genauer gesagt, ist es eine Kombination aus IIR und FIR, also es gibt einen Feedforward und einen Feedback Teil. Jetzt habe ich hier also meine Filterkoeffizienten. Das sind a1 bis a4 und b1 bis b4. Alles Floating point Zahlen, kleiner als 1. Wie kann ich nun mein Filter in eine gescheite digitale Form überführen, sodass ich es auf einem Mikrocontroller ohne Float Unit implementieren kann? Ich dachte an 16 Bit int Berechnung. Muss ich einfach alle Koeffizienten mit 2^16 Multiplizieren?
Linda schrieb: > Muss ich einfach alle Koeffizienten mit 2^16 Multiplizieren? Das kommt drauf an, womit du die Koeffiziente in deiner Rechnung multiplizierst. Der int16-Bereich darf in der ganzen Rechnung nicht verlassen werden. Je nach Stabilität, i.e. Empfindlichkeit für Abweichungen in den Koeffizienten durch Quantisierungsfehler, kann int16 arg knapp werden.
Hallo, also ich könnte intern im Filter ja auch alles mit Int32 oder meinetwegen mit Int64 rechnen. Einfach der Eingang und Ausgang muss int16 sein, weil mein ADC und DAC so viele Bits haben. Mit In32 könnte es gehen? Wie rechne ich denn nun die Koeffizienten um?
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.