Amclib

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Amclib

739 次查看
Ayaz
Contributor IV

I have followed the userguid to implement the filter.

GDFLIB_FilterIIR2Init_FLT

and

GDFLIB_FilterIIR2_FLT

I have implemented an IIR filter in my project, which needs to be called periodically. However, the filter only works if I initialize it before each call, which resets the filter. This periodic reset is not acceptable for my design. If I initialize the filter only once at the beginning,  the GDFLIB_FilterIIR2_FLT returns NaN values, indicating that the filter is not functioning correctly. Could you please provide an example of how to use the IIR filter effectively for periodic data filtering?

for 

 

GDFLIB_FilterIIR2Init_FLT

and

GDFLIB_FilterIIR2_FLT

0 项奖励
回复
2 回复数

711 次查看
_Leo_
NXP TechSupport
NXP TechSupport

Hi, could you please share your implementation?

Do you have consulted 3.14.3 Worst-Case Error Bounds section of S32K3XXMCFLTACC?

0 项奖励
回复

692 次查看
_Leo_
NXP TechSupport
NXP TechSupport

Hi again,

The GDFLIB_FilterIIR2_FLT function is designed for periodic use and the GDFLIB_FilterIIR2Init_FLT function only needs to be called once at the beginning.

Here is a simplified example of how to use this filter periodically:

//---------------------------------------------------------------------
float fltIn[10] = {0, 0.3211, 0.7427, 0.6645, 0.2892, 0.3374, 0.9086, 0.0323, 0.6964, 0.2088};
float fltOut;

flttrMyIIR2.trFiltCoeff.fltB0 = (float)(0.066122101544579);
flttrMyIIR2.trFiltCoeff.fltB1 = (float)(0.0);
flttrMyIIR2.trFiltCoeff.fltB2 = (float)(-0.066122101544579);
flttrMyIIR2.trFiltCoeff.fltA1 = (float)(-1.776189018043779);
flttrMyIIR2.trFiltCoeff.fltA2 = (float)(0.867755796910841);

GDFLIB_FilterIIR2Init_FLT(&flttrMyIIR2);

for (int i = 0; i < 10; i++){
   fltOut = GDFLIB_FilterIIR2_FLT(fltIn[i], &flttrMyIIR2);
   }
//---------------------------------------------------------------------

 

A NaN value may appear at the filter output for several reasons:

  • Input values contain at least one denormalized number
  • Input values contain at least one NaN, Inf, or –Inf
  • Output overflow/underflow
  • Intermediate result overflow/underflow

More details can be found in the document Accuracy of Floating-Point Functions (S32K3XXMCFLTACC).

0 项奖励
回复