综合技术
直播中

刘秀兰

7年用户 197经验值
私信 关注
[问答]

请问原子的这个IIR滤波是怎么实现的?

原子的这个IIR滤波是怎么实现的?看不懂是表达的那个公式。有人讨论下吗?
#define IIR_SHIFT         8
/**
* IIR滤波.
*/
int16_t iirLPFilterSingle(int32_t in, int32_t attenuation,  int32_t* filt)
{
int32_t inScaled;
int32_t filttmp = *filt;
int16_t out;
if (attenuation > (1< {
  attenuation = (1< }
else if (attenuation < 1)
{
  attenuation = 1;
}
// Shift to keep accuracy
inScaled = in << IIR_SHIFT;
// Calculate IIR filter
filttmp = filttmp + (((inScaled-filttmp) >> IIR_SHIFT) * attenuation);
// Scale and round
out = (filttmp >> 8) + ((filttmp & (1 << (IIR_SHIFT - 1))) >> (IIR_SHIFT - 1));
*filt = filttmp;
return out;
}

回帖(3)

李新梅

2019-7-4 07:34:58
帮顶
举报

杨秀珍

2019-7-4 08:15:22
帮顶,现在也想学习一下IIR滤波,用途很广。
举报

谢微微

2019-7-4 08:33:55
这个函数哪里找到的?为什么我找只到了这个。@lycreturn
举报

更多回帖

发帖
×
20
完善资料,
赚取积分