Forum: Digitale Signalverarbeitung / DSP / Machine Learning Quantisierung von Filter


von Linda (Gast)


Lesenswert?

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?

von Mike (Gast)


Lesenswert?

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.

von Linda (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.