I am aresearcherat the FacultyofEngineering, University of Florence.
Imade4IIRband passfilterswithFs=40MHzandBP=0.5-1.8MHzrespectivelythe 2nd,4th,6thand10thorder,with Butterworthapproximation,usingtheMatlabfdatool.
Using theippsIIR_32f implementedthisfilterin myprogramandIcomparedthe resultwiththeoutputof thefilter functioninMatlab. Forthefiltersof the 2ndand4thorder, the resultsare very similar. Thefiltersof the 6thand10th orderinMatlabworkwellwhileusing ippsIIR_32f the outputdivergesaftera fewsamples.
Can youhelp me?
Here is some comment from the function owner:
MatLab may perform all internal calculations in doubles. And it is known problem with 32f data type, MatLab doesnt recommend to use IIR of order higher than 15 (otherwise it becomes unstable because of finite accuracy of double data type) taking into account that this recommendation is for doubles (mantissa=53 bit) it should be clear that for float data type (mantissa=23 bit) the critical order is 23/53*15= ~6.
So, you should use 64 bit function IIR_64f for orders >=6.