högre ordning digitala lågpassfilter...

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
SvenW
Inlägg: 1156
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Re: högre ordning digitala lågpassfilter...

Inlägg av SvenW »

Tror att det här är ett område där man lätt störs av trunkeringsfel och overflow.
I synnerhet om man har extrema parametrar, skarpa filter och heltalsvariabler.
Bra att testköra med olika indata och analysera bruset/avvikelserna.
Man kan inte alltid förutsätta att trunkeringsfel uppträder gaussiskt som om det vore vanligt brus.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: högre ordning digitala lågpassfilter...

Inlägg av jesse »

Jag är inte orolig för trunkeringsfel i det här läget. upplösning och noggrannhet på data får vara upp till 64*LSB.... så det borde väl duga.
Sen är det vanligtvis inte så svårt att beräkna overflow och liknande. Jag har inte gjort det på det här filtret, men eftersom jag har bestämt mig för att använda det så ska jag räkna på det. Det kan vara lite kompicerat kanske, eftersom man adderar saker upprepade gånger....
Användarvisningsbild
exile
EF Sponsor
Inlägg: 496
Blev medlem: 21 oktober 2005, 23:32:07

Re: högre ordning digitala lågpassfilter...

Inlägg av exile »

Men koden som du visar är IIR-filter, och fel avrundat och polerna är på "gränsen" så kan med lite otur oscillera.

Finns det en anledning till att du inte använder ett FIR-filter? för 400sps är inte direkt mycket även för en 8bitar uC, Givet vis blir ett IIR "billigare" förhållande till beräkningskraftigt och branthet.

Angående 400sps vs 100sps så kan man enkelt "down sampla" i uC och vinna lite mer upplösning genom att addera 4sampel dividera med 4 (ett enkel LP FIR filter) samtidigt minska kravet på "Anti-aliasing" filtret.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: högre ordning digitala lågpassfilter...

Inlägg av jesse »

Jag trodde IIR-filter var bättre än FIR-filter. :oops:
Men jag märkte ju själv hur det började oscillera under vissa förhållanden.

Två orsaker att jag använder IIR, förutom ovanstående är
(a) kortare enklare kod, mindre minnesåtgång.
(b) jag har ingen aning om hur jag utformar ett FIR-filter motsvarande ett andra gradens lågpassfilter?

Men om du tror att dessa är bättre på olika vis ska jag försöka googla lite och se vad jag får fram. :)
Skriv svar