📄 ms20r2.m
字号:
%脉冲响应不变法用于带通滤波
%数字滤波器指标
wp1=0.3*pi;wp2=0.7*pi; %数字滤波器的通带截止频率
ws1=0.1*pi;ws2=0.9*pi; %数字滤波器的阻带截止频率
Rp=1;As=15; %输入滤波器的通阻带衰减指标
%转换为模拟原型滤波器指标
Fs=2000;T=1/Fs;
Omgp1=wp1*Fs;Omgp2=wp2*Fs;%模拟滤波器的通带截止频率
Omgp=[Omgp1,Omgp2];
Omgs1=ws1*Fs;Omgs2=ws2*Fs;%模拟滤波器的阻带截止频率
Omgs=[Omgs1,Omgs2];
bw=Omgp2-Omgp1;w0=sqrt(Omgp1*Omgp2);%模拟通带带宽和中心频率
%模拟滤波器计算
[n,Omgn]=buttord(Omgp,Omgs,Rp,As,'s')%计算阶数n和截止频率
[z0,p0,k0]=buttap(n); %设计归一化的模拟原型滤波器
ba1=k0*real(poly(z0)); %求原型滤波器系数b
aa1=real(poly(p0)); %求原型滤波器系数a
[ba,aa]=lp2bp(ba1,aa1,w0,bw) %变换为模拟带通滤波器
[bd,ad]=impinvar(ba,aa,Fs); %用脉冲响应不变法计算数字滤波器系数
[C,B,A]=dir2par(bd,ad) %将直接型变换为并联型
%求数字系统的频率特性
[H,w]=freqz(bd,ad);
dbH=20*log10((abs(H)+eps)/max(abs(H))); %化为分贝值
%
subplot(2,2,1),plot(w/pi,abs(H));
ylabel('幅度');xlabel('频率/\pi');axis([0,1,0,1.1]);
set(gca,'XTickMode','manual','XTick',[0.1,0.3,0.7,0.9]);
set(gca,'YTickMode','manual','YTick',[0,Attn,ripple,1]);grid
subplot(2,2,2),plot(w/pi,angle(H)/pi);
ylabel('相位');xlabel('频率/\pi');axis([0,1,-1,1]);
set(gca,'XTickMode','manual','XTick',[0.1,0.3,0.7,0.9]);
set(gca,'YTickMode','manual','YTick',[-1,0,1]);grid
subplot(2,2,3),plot(w/pi,dbH);
ylabel('幅度(dB)');xlabel('频率/\pi');axis([0,1,-30,5]);
set(gca,'XTickMode','manual','XTick',[0.1,0.3,0.7,0.9]);
set(gca,'YTickMode','manual','YTick',[-25,-15,-1,0]);grid
subplot(2,2,4),zplane(bd,ad);
axis([-1.1,1.1,-1.1,1.1]);ylabel('零极图');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -