纯C语言软件算法,没有做过多优化,只是实现了基本IIR算法
/******************************************************************************
* 二阶IIR滤波器单元,采用直接II型
* 由多个2阶节,可以组成更多高阶的滤波器
* 根据参数的不同,可以生成低通,高通,带通,带阻
******************************************************************************/
#include "iir.h"
//初始化IIR数据
void IIR_Init(IIR_Typedef *pIIR, IIR_COEF* pCoef)
{
int i;
for (i=0; i<3; i++)
{
pIIR->fCoefA[i] = pCoef->fCoefA[i];
pIIR->fCoefB[i] = pCoef->fCoefB[i];
pIIR->fTemp[i] = 0;
}
}
//复位历史值
void IIR_Reset(IIR_Typedef *pIIR)
{
pIIR->fTemp[0] = 0;
pIIR->fTemp[1] = 0;
pIIR->fTemp[2] = 0;
}
//IIR滤波
float IIR