FIR和IIR

IIR(Infinite impulse response)&FIR(Finite impulse response)

(1)IIR(无限冲激响应)型数字滤波器

顾名思义,当输入为冲激函数时,输出冲激响应h[n](由于属于数字滤波器,自变量变为n)可以无限延长。

(2)FIR(有限冲激响应)型数字滤波器

当输入为冲激函数时,输出冲激响应 h[n] 可以在有限的时间长内结束。

造成这种现象的主要原因是因为IIR型的滤波器采用了递归的结构,即结构中存在回环形成反馈支路来不断地产生输入以进行无限的输出;与之相比,FIR滤波器则实现的较为简单,它的结构中不存在反馈部分,因此它的冲激响应是有限的。

所谓无限和有限就是有没有把之前滤波器的输出再纳入后面滤波器的输入,如果纳入了,就是无限(会造成无限时间内的影响),如果没纳入,就是有限。

冲击信号是单位阶跃信号的倒数,即0无穷大,其他地方都是0,总体面积为1。

可以考虑一个非极限情况下的离散的冲激信号,例如k时是100,其他时候都是0,构造一个FIR,将前后三个值求平均,作为滤波器输出:

y2(k) = y(k-1)+y(k)+y(k+1)

这样滤波器最终的输出就是y2,y2在k-1,k,k+1三个时刻的值都是33.333,其他时刻都是0,这就是有限冲激响应

再构造一个IIR,同样将前后三个值求平均,作为滤波器输出,不同的是要用之前滤波器的输出作为后续时刻滤波器的输入:

y(k) = y(k-1)+y(k)+y(k+1)

这样后续时刻滤波器的输出就会一直受到这个冲激信号的影响,无限趋近于0而不等于0。

FIR和IIR都可以在matlab里进行设计得到参数,在工程实现上,IIR较为简单,一般会使用二阶IIR滤波器,对于二阶IIR滤波器,可以直接通过matlab中的滤波器工具设置其采样频率和截止频率(截止频率通过对原始信号做FFT并进行分析得到),然后得到其差分方程中的系数,再转换为C代码,并放在板子里运行。

针对IMU数据,如果是做惯导计算,一般不需要对高采样率的原始数据做低通滤波,因为后续的机械编排算法中的积分环节本身就具有高频抑制作用,而且低通滤波会带来延迟,造成对惯导算法的精度影响,如果是用原始数据做其他应用,例如给神经网络做相似度识别,或直接使用数据做计算,例如用加速度找平,都需要先做低通滤波。

你可能感兴趣的:(bowen的坚决不断更专栏,算法)