Matlab 中IIR数字滤波器设计相关函数 选择滤波器的最小阶数 [N,Wn]=buttord(wp,ws,Rp,Rs); wp,ws 的单位归一化频率 [N,Wn]=buttord(wp,ws,Rp,Rs,'s'); wp,ws 的单位rad/s 设计巴特沃思低通滤波器 [Z,P,K]=buttap(N); 把巴特沃思零极点型转化为传递函数型 [Bap,Aap]=zp2tf(Z,P,K);
模拟滤波器原型转化为截止频率为wn的低通滤波器 [b,a]=lp2lp(Bap,Aap,Wn); 用双线性变换实现模拟滤波器到数字滤波器的转换 [bz,az]=bilinear(b,a,Fs);
Matlab 中FIR数字滤波器设计相关函数 1.窗函数 窗函数 矩形窗 三角窗 宁汉窗 MATLAB 函数 boxcar(N) triang(N) hanning(N) hamming(N) blackman(N) Kaiser(N,BETA) 汉明窗 布莱克曼 凯泽窗
2.FIR数字滤波器设计函数 b = fir1(n,Wn) b = fir1(n,Wn,'ftype') b = fir1(n,Wn,window) b = fir1(n,Wn,'ftype',window) n滤波器的阶数:对于高通、带阻滤波器n为偶数; ftype滤波器类型:低通low、高通high、带通bandpass、带阻stop Wn截止频率:低通、高通时Wn,取值范围为(0.0~1.0),其中1对应0.5fs,fs为采样频率,带通、带阻时Wn =[W1 W2]且W1<W2,默认为低通或高通。 window窗函数类型:window可取boxcar、hanning、blankman及kaiser等,缺省为hamming,长度为n+1; b为FIR滤波器系数向量:为n+1。
b=fir1(N,Wn/pi,hanning(N+1)); c=fir1(N,Wn/pi,hamming(N+1)); Wp=0.2π,阻带截止频率Ws=0.3 π,阻带衰减不 小于40dB,通带衰减不大于3dB 程序代码如下: wp=0.2*pi;ws=0.3*pi; wdelta=ws-wp; N=ceil(8*pi/wdelta); Wn=(0.2+0.3)*pi/2; b=fir1(N,Wn/pi,hanning(N+1)); c=fir1(N,Wn/pi,hamming(N+1)); figure(1);freqz(b,1,521);title('汉宁窗'); figure(2);freqz(c,1,521);title('海明窗');
频率响应函数: [H,W]=freqz(B,A,N) A,B为滤波器的系数, 直接绘制频率特性曲线。 [H,F]=freqz(B,A,N, Fs)在[0,Fs/2]上等间隔采样。
Matlab中快速离散傅立叶变换函数 Y = fft(x) 当x的长度为2的整数幂时,用基-2算法, Y = fft(x,n) 一维快速离散傅立叶正变换函数 Y = fft(x) 当x的长度为2的整数幂时,用基-2算法, 否则用分裂算法 Y = fft(x,n) n点的快速傅立叶变换,当x大于n时截断x,当x小于n时补零 一维快速离散傅立叶逆变换函数 Y =ifft(x) Y = ifft(x,n)
[bz1,az1]=impinvar(b,a,FS) [bz2,az2]=bilinear(b,a, FS) IIR数字滤波器设计函数 [bz1,az1]=impinvar(b,a,FS) [bz2,az2]=bilinear(b,a, FS) b,a:Ha(s)分子和分母多项式系数 FS:采样频率 bz1,az1;bz2,az2 :h(z)分子和分母多项式系数
b=[0,1.5,1]; a=[1,1.5,0.5]; [bz1,az1]=impinvar(b,a,10) [bz2,az2]=bilinear(b,a,10) 运行结果:
bz1 = 0.1500 -0.1404 0 az1 = 1.0000 -1.8561 0.8607 bz2 = 0.0720 0.0046 -0.0674 az2 = 1.0000 -1.8560 0.8606
例 8-14 用双线性变换法设计一个Butterworth低通滤波器,要求其通带截止频率100 Hz,阻带截止频率200 Hz,通带衰减Rp小于2 dB,阻带衰减大于15 dB,采样频率Fs=500 Hz。 MATLAB实现程序: %求模拟滤波器参数 wp=100*2*pi; ws=200*2*pi; Rp=2; Rs=15; Fs=500; Ts=1/Fs; %选择滤波器的最小阶数
[N,Wn]=buttord(wp,ws,Rp,Rs,′s′); %创建butterworth模拟滤波器 [Z,P,K]=buttap(N); %把滤波器零极点模型转化为传递函数模型 [Bap,Aap]=zp2tf(Z,P,K); %把模拟滤波器原型转换成截至频率为Wn的低通滤波器 [b,a]=lp2lp(Bap,Aap,Wn); %用双线性变换法实现模拟滤波器到数字滤波器的转换 [bz,az]=bilinear(b,a,Fs); %绘制频率响应曲线 [H,W]=freqz(bz,az); plot(W*Fs/(2*pi),abs(H)); xlabel(′频率/Hz′) ylabel(′频率响应幅度′)