本帖最后由 会笑的星星 于 2019-12-31 21:31 编辑
在处理采样信号时,我们常常需要对采样的信号进行滤波,而我们经常使用一种滤波算法就是一阶低通滤波算法(一阶滞后数字滤波器),使用这个数字滤波器来近似模拟滤波器以达到滤波效果。这个算法的方程如下:
y[n] = αx[n] + (1-α)y[n-1],其中α = T/ (T+RC) ≈ T/ RC = 2πTfc(α < 1), T为采样周期,RC为对应模拟低通滤波器的电阻电容,fc为低通滤波器的截止频率。
这个算法很简单、易用,在各位高手推荐的常用x大数字滤波算法里面是一定有一个名额的。
事实上,使用数字滤波器近似模拟低通滤波器的方法有多种,不同的方法得到的滤波器性能是不一样的。比如上述公式就是一种被称为向后差分的方法得到的数字滤波器(后面我称为向后差分法滤波器)。这种数字滤波器相比真实的模拟滤波器其实是有比较大失真的,有时候未必满足应用要求。因此在这里我介绍一种相比上述滤波器失真度更小的数字低通滤波器,这种数字滤波器是采用双线性法得到(后面我称为双线性法滤波器),方程如下:
y[n] = α*(x[n] + x[n-1]) + βy[n-1],其中α = T/(T+2RC),β = (2RC-T)/(T+2RC) ,其他参数的意义同向后差分法滤波器。
相比采用向后差分法得到的低通滤波器,这个方程更为复杂,而且β可能出现负数,导致程序处理更为麻烦,但是不论从理论还是实际上这种滤波器的表现确实要比向后差分法更好。下面我们使用这两种滤波器来做滤波效果对比实验。
我使用的信号是采用一个500HZ的正弦波,一个13kHZ的余弦波合成的,我们的目的是要过滤掉13kHZ的高频余弦波。这个合成的波形如下。
我把低通滤波器的截止频率定为1kHZ,采样频率我定为30kHZ(满足采样定理的要求), 由此我分别计算出两种滤波器对应的参数(这里省略了),之后我们就可以利用这两个滤波器来滤波了。使用两种滤波器对上述波形的进行滤波后的结果如下所示。
可以看到,两种滤波器都把500HZ的信号给过滤出来了,但仔细看两个波形的区别,发现差分方法滤波器(图中蓝色波形)得到的信号有很多锯齿,而使用双线性法的滤波器(图中黄色波形)得到的波形要更为干净。因此,从这里来看双线性法滤波器表现比差分法滤波器更好。
当然,双线性法相比差分法得到的滤波器公式更为复杂,程序上也更不容易处理,这也是双线性法得到的滤波器相比差分法得到的滤波器的缺点。在实际使用中,如果我们对滤波效果没有过高的要求,选择由差分法滤波器显然更好,如果我们对滤波效果有比较高的要求,无疑尝试使用双线性滤波器是一个不错的选择。还是那句话,没有最好,只有合适的。
|