matlab设计滤波器

滤波器相关函数

陈怀琛的《数字信号处理教程--MATLAB释义与实现》:
从性能上来说,IIR滤波器传递函数包括零点和极点两组可调因素,对极点的惟一限制是在单位圆内。因此可用较低的阶数获得高的选择性,所用的存储单元少,计算量小,效率高。但是这个高效率是以相位的非线性为代价的。选择性越好,则相位非线性越严重。FIR滤波器传递函数的极点固定在原点,是不能动的,它只能靠改变零点位置来改变它的性能。所以要达到高的选择性,必须用较高的阶数;对于同样的滤波器设计指标,FIR滤波器所要求的阶数可能比IIR滤波器高5-10倍,结果,成本较高,信号延时也较大;如果按线性相位要求来说,则IIR滤波器就必须加全通网络进行相位校正,同样要大大增加滤波器的阶数和复杂性。而FIR滤波器却可以得到严格的线性相位。
从结构上看,IIR滤波器必须采用递归结构来配置极点,并保证极点位置在单位圆内。由于有限字长效应,运算过程中将对系数进行舍入处理,引起极点的偏移。这种情况有时会造成稳定性问题,甚至产生寄生振荡。相反,FIR滤波器只要采用非递归结构,不论在理论上还是在实际的有限精度运算中都不存在稳定性问题,因此造成的频率特性误差也较小。此外FIR滤波器可以采用快速傅里叶变换算法,在相同阶数的条件下,运算速度可以快得多。
另外,也应看到,IIR滤波器虽然设计简单,但主要是用于设计具有分段常数特性的滤波器,如低通、高通、带通及带阻等,往往脱离不了模拟滤波器的格局。而FIR滤波器则要灵活得多,尤其是他易于适应某些特殊应用,如构成数字微分器或希尔波特变换器等,因而有更大的适应性和广阔的应用领域。
对于FIR滤波器,冲激响应在有限时间内衰减为零,其输出仅取决于当前和过去的输入信号值。对于IIR滤波器,冲激响应理论上应会无限持续,其输出不仅取决于当前和过去的输入信号值,也取决于过去的信号输出值。

一阶滤波:
算法基础:Yn = a * Xn + (1-a) * Yn-1
a:滤波系数,其值通常远小于1 ;Xn:本次采样值: Yn-1;上次的滤波输出值;Yn:本次滤波的输出值。
二阶IIR滤波器:
算法基础:Y(n)= b0Xn + b1Xn-1 + b2Xn-2 - (a1Yn-1 + a2*Yn-2)

matlab方法设计滤波器步骤

1、在命令窗口输入:fdatool
在这里插入图片描述

2、设计完之后在这里插入图片描述
截止频率是下降到3dB的点,功率下降到0.707。
3、File—export—导出SOS增益和矩阵G然后再转成常见形式
或者Analysis–Filter Coefficients–edit–Convert to Single Section
在这里插入图片描述
就可以得到传输函数的各项系数,比如现在是2阶的系数:
Y(n)= b0Xn + b1Xn-1 + b2Xn-2 - (a1Yn-1 + a2*Yn-2)

猜你喜欢

转载自blog.csdn.net/sun_fengjiao/article/details/83997305