📄 call_dlp2bs.m
字号:
% 《数字信号处理教程——MATLAB释义与实现》第四章演示程序
% 电子工业出版社出版 陈怀琛编著 2004年8月
% 数字滤波器频带变换演示
% call_dlp2bs.m 数字低通滤波器到数字带阻滤波器
%
function []=call_dlp2bs(h1,h2)
axes(h1);hold off
plot([0,0],[-1.2,1.2],'linestyle','-.','color','g');hold on
plot([-2,2],[0,0],'linestyle','-.','color','g');axis([-1.2,1.2,-1.2,1.2]);
axes(h2);hold off
plot([0,0],[-1.2,1.2],'linestyle','-.','color','g');hold on
plot([-2,2],[0,0],'linestyle','-.','color','g');axis([-1.2,1.2,-1.2,1.2]);
w0=0.2*pi; %低通滤波器的截止频率(指过渡滤波器,而非最终要设计的滤波器,它的截止频率在wc(dtransform.m中)设置
w=0:0.1:2*pi; %在这里可以更改其间隔,如果改成0:0.1:2*pi,则下面的判断要改成abs(w(i))<w0 | abs(w(i))>2*pi-w0
zlp=exp(j*w);
[zbs0,zbs1]=dtransform(w,'lp2bs');
mark1=1;
for k=1:2
%注意加下面这几行语句的作用,因为对于w=0 时,zlp=1,此时用plot(zlp)绘出来的点为(1,1)点,
%可以考虑去除这几行语句,同时把i改为从i=1:length(w),看看实验的结果,
axes(h1);
plot(zlp(1)+0.0001j,'linestyle','o','color','r');axis([-1.2,1.2,-1.2,1.2]);axis('equal');hold on
axes(h2);
if k==2
plot(zbs0(1)+0.001j,'linestyle','o','color','r');axis([-1.2,1.2,-1.2,1.2]);axis('equal');hold on
else
plot(zbs1(1)+0.001j,'linestyle','o','color','r');axis([-1.2,1.2,-1.2,1.2]);axis('equal');hold on
end
pause(0.5);
for i=2:length(w)
%绘制低通滤波器
axes(h1);
if (k==2 & mark1==1)
mark1=0;
hold off;
plot([0,0],[-1.2,1.2],'linestyle','-.','color','g');hold on
plot([-2,2],[0,0],'linestyle','-.','color','g');axis([-1.2,1.2,-1.2,1.2]);
plot(zlp(1)+0.0001j,'linestyle','o','color','r');axis([-1.2,1.2,-1.2,1.2]);axis('equal');hold on %
end
if (abs(w(i))<w0 | abs(w(i)>2*pi-w0))
plot(zlp(i),'linestyle','o','color','r');axis([-1.2,1.2,-1.2,1.2]);axis('equal');hold on
else
plot(zlp(i),'linestyle','o','color','b');axis([-1.2,1.2,-1.2,1.2]);axis('equal');hold on
end
%绘制带阻滤波器
axes(h2);
if (k==2)
if (abs(w(i))<w0 | abs(w(i)>2*pi-w0))
plot(zbs0(i),'linestyle','o','color','r');axis([-1.2,1.2,-1.2,1.2]);axis('equal');hold on
else
plot(zbs0(i),'linestyle','o','color','b');axis([-1.2,1.2,-1.2,1.2]);axis('equal');hold on
end
else
if (abs(w(i))<w0 | abs(w(i)>2*pi-w0))
plot(zbs1(i),'linestyle','o','color','r');axis([-1.2,1.2,-1.2,1.2]);axis('equal');hold on
else
plot(zbs1(i),'linestyle','o','color','b');axis([-1.2,1.2,-1.2,1.2]);axis('equal');hold on
end
end
pause(0.2);
end
pause(0.5);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -