巴特沃夫低通滤波器在MATLAB中怎么实现

 我来答
135246kdb
2010-11-27 · TA获得超过1052个赞
知道答主
回答量:111
采纳率:0%
帮助的人:98.4万
展开全部

%利用脉冲响应不变法,用巴特沃斯原型设计

%技术指标:wp=0.4*pi,ws=0.6*pi,Ap=0.5dB,As=50dB

wp=0.4*pi;

ws=0.6*pi;

Ap=0.5;

As=50;

Fs=1000;T=1/Fs;

omegap=wp*Fs;omegas=ws*Fs;

ripple=sqrt(1/10^(0.1*Ap));

attn=1/(10^(As/20));

[N,omegac]=buttord(omegap,omegas,Ap,As,'s');

[z0,p0,k0]=buttap(N);

k=k0*omegac^N;

z=z0*omegac;p=p0*omegac;

ba=k*real(poly(z));

aa=real(poly(p));

[bd,ad]=impinvar(ba,aa,Fs);

[H,w]=freqz(bd,ad,1000,'whole');

H=[H(1:501)]';

w=[w(1:501)]';

mag=abs(H);

db=20*log10(mag);

pha=angle(H);

figure;

subplot(221);

plot(w/pi,mag);

ylabel('|H|');title('幅度响应');axis([0 1 0 1.1]);

grid;

set(gca,'xtickmode','manual','xtick',[0 0.4 0.6 1]);

set(gca,'ytickmode','manual','ytick',[0 attn ripple 1]);

subplot(222);

plot(w/pi,pha/pi);

xlabel('频率(单位:pi)');ylabel('单位:pi');title('相位响应');

axis([0 1 -1 1]);

grid;

set(gca,'xtickmode','manual','xtick',[0 0.4 0.6 1]);

set(gca,'ytickmode','manual','ytick',[-1 0 1]);

subplot(223);

plot(w/pi,db);

xlabel('频率(单位:pi)');ylabel('分贝');title('幅度(单位:分贝)');

axis([0 1 -150 50]);

grid;

set(gca,'xtickmode','manual','xtick',[0 0.4 0.6 1]);

set(gca,'ytickmode','manual','ytick',[-100 -50 0 50]);

set(gcf,'color','w');

%程序运行结果如下图

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式