Lab3:无限冲激响应低通滤波器的设计
一iir原理:
时域分析:
设输入序列为x[n],输出序列为y[n],则
Y[n]=a0*x[n]+a1*x[n-1]+…+ai*x[n-i]
-(b1*y[n-1]+ b2*y[n-2]+…..+ bj*y[n-j])(即与y有关)
对于iir的设计实际便是对于a0~ai与b1~bj系数的确定。
频域分析:
设输入序列为x[n],输出序列为y[n],x[n]序列的离散时间傅立叶变换X(ejw) ,Y[n]序列的离散时间傅立叶变换Y(ejw).
则:Y(ejw)= X(ejw)*H(ejw)。
其中H(ejw) =(a0*z-0+a1*z-1+ a2*z-2+…+ ai*z-i)/
(1*z-0+b1*z-1+b2*z-2+ b3*z-3+…+ bj*z-j).
即:即有分母,又有分子。
二 理解:
Conv(y,b)=conv(x,a)其中b0!=0(多为1)
即为输出序列y与系数序列b的卷积
等于输入序列x与系数序列a的卷积。
三 设计方法:
首先分析出滤波器的性能(wp,ws,Rp,Rs)。
直接设计方法:
(直接求出数字滤波器的系数序列)
1:首先利用阶数估算函数以及性能指标wp,ws,Rp,Rs作为函数输入。直接求数字滤波器的出最低阶数N与归一化截止频率Wn。
2:然后利用N,Wn,和一些参数去求出数字滤波器的系数序列a与b
3:利用freqz函数观察结果。(可省)
脉冲响应不变法设计:
(先求出模拟滤波器的系数序列,再转换为数字滤波器的系数序列)
1:首先利用阶数估算函数以及性能指标wp,ws,Rp,Rs作为函数输入。先求模拟滤波器的出最低阶数N与归一化截止频率Wn。
2:然后利用N,Wn,和一些参数去求出模拟滤波器的系数序列a与b
3:利用freqs函数观察结果。(可省)
4:利用impinvar()函数把模拟滤波器的系数序列转换为数字滤波器的系数序列
5:利用freqz函数观察结果。(可省)
双线性变换法设计:
(先求出模拟滤波器的系数序列,再转换为数字滤波器的系数序列)
1:首先利用阶数估算函数以及性能指标wp,ws,Rp,Rs作为函数输入。先求模拟滤波器的出最低阶数N与归一化截止频率Wn。
2:然后利用N,Wn,和一些参数去求出模拟滤波器的系数序列a与b
3:利用freqs函数观察结果。(可省)
4:利用bilinear()函数把模拟滤波器的系数序列转换为数字滤波器的系数序列
5:利用freqz函数观察结果。(可省)
四 matlab所用函数
4.1滤波器函数(模拟与数字均可以求)
功能: 估算阶数函数 计算系数函数
巴特沃兹滤波器: buttord, butter
切比雪夫I滤波器: cheb1ord, cheby1
切比雪夫II滤波器: cheb2ord, cheby2
椭圆滤波器: ellipord, ellip
说明:
对于所有的低通iir滤波器而言,其标准为
标准:
1通带的边频:wp 见图
2阻带的边频:ws 见图
3峰通带波纹:Rp=20*log10( )db (p86)
4最小阻带衰减:Rs=20*log10(A) db (p86)
估算阶数的函数fn的统一用法:
[N,Wn]=fn(Wp,Ws,Rp,Rs)
说明:参数见上图
返回值:N=满足指标的最低阶数,Wn=归一化截止频率
注意:也可以计算高通与带通滤波器。
计算系数的函数fc的统一用法(低通)
[num,den]=butter(N,Wn)
[num,den]=cheby1(N,Rp,Wn)
[num,den]=cheby2(N,Rs,Wn)
[num,den]=ellip(N,Rp,Rs,Wn)
注意:高通:参数还要加’high’高通 ,’stop’带阻,
注意:估算阶数函数与计算系数函数默认为求出数字滤波器(方法一)
若想求出模拟数字滤波器(方法二与三),则在所用的函数的参数中加入’s’
4.2模拟滤波器的系数序列转换为数字滤波器的系数序列函数
bilinear()双线性变换法
impinvar()脉冲响应不变法
4.3结果的观察(直接画出幅频与相频曲线)
Freqz();看数字滤波器的频域响应
Freqs();看模拟滤波器的频域响应
五:matlab示例
例] 采样频率为 1Hz,通带临界频率 fp =0.2Hz,通带内衰减小于 1dB(αp=1);阻带临界
频率 fs="0".3Hz,阻带内衰减大于 25dB(αs=25)。设计一个数字滤波器满足以上参数。
%直接设计数字滤波器
[n,Wn]=buttord(0.2,0.3,1,25); %无‘s’
[b,a]=butter(n,Wn); %无‘s’
freqz(b,a,512,1); %用freqz不用freqs
数字滤波器系数的序列a,b
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%a=1.0000 -4.5037 9.3614 -11.5644 9.2168 -4.8281 1.6174 -0.3159 0.0275
%b=0.0000 0.0003 0.0012 0.0024 0.0030 0.0024 0.0012 0.0003 0.0000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%脉冲响应不变法设计数字滤波器
[n,Wn]=buttord(0.2,0.3,1,25,’s’); %有‘s’
[b,a]=butter(n,Wn,’s’); %有‘s’
freqs(b,a); %用freqs不用freqz
[bz,az]=impinvar(b,a,1);
freqz(bz,az,512,1);
模拟滤波器系数的序列a,b
数字滤波器系数的序列az,bz
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%a=1.0000 1.2550 0.7875 0.3225 0.0947 0.0206 0.0033 0.0004 0.0000 0.0000
%b= 1.0e-005 *
0 0 0 0 0 0 0 0 0 0.1109
%az=1.0000 -7.7485 26.7606 -54.0600 70.3876 -61.2489 35.6151 -13.3434 2.9225 -0.2851
%bz=1.0e-006 *
0.0000 0.0000 0.0051 0.0772 0.2440 0.2122 0.0508 0.0025 0.0000 0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%双线性变换法设计 ButterWorth 数字滤波器
[n,Wn]=buttord(0.2,0.3,1,25,’s’); %有‘s’
[b,a]=butter(n,Wn,’s’); %有‘s’
freqs(b,a) %用freqs不用freqz
[bz,az]=bilinear(b,a,1);
freqz(bz,az,512,1)
模拟滤波器系数的序列a,b
数字滤波器系数的序列az,bz
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%a= 1.0000 1.2550 0.7875 0.3225 0.0947 0.0206 0.0033 0.0004 0.0000 0.0000
%b=1.0e-005 *
0 0 0 0 0 0 0 0 0 0.1109
%az= 1.0000 -7.7502 26.7721 -54.0942 70.4461 -61.3114 35.6580 -13.3618 2.9270 -0.2856
%bz=1.0e-006 *
0.0012 0.0104 0.0417 0.0972 0.1458 0.1458 0.0972 0.0417 0.0104 0.0012
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
文章评论(0条评论)
登录后参与讨论