MATLAB如何设计巴特沃斯带阻滤波器,巴特沃斯带阻数字滤波器设计matlab程序及仿真图 - 副本...

fs=15000;T= 1/fs;

rp=1;rs=40;

wp1=0.11*pi;wp2=0.81*pi;ws1=0.31*pi;ws2=0.61*pi;%数字带阻滤波器技术指标wc1=(2/T)*tan(wp1/2);%频率预畸变

wc2=(2/T)*tan(wp2/2);wr1=(2/T)*tan(ws1/2);wr2=(2/T)*tan(ws2/2);

w0=sqrt(wc1*wc2);B=wc2-wc1;

wp=1;%归一化通带截止频率

ws=wp*(wr1*B) / (w0^2-wr1^2) ; %归一化阻带截止频率

[N,wc]=buttord(wp,ws,rp,rs,'s')%求滤波器阶数和3dB截止频率

[Z,P,K]=buttap(N)%设计模拟低通滤波器

[Md,Nd]=zp2tf(Z,P,K)%将零极点形式转换为传输函数形式

[M,N]=lp2bs(Md,Nd,w0,B)%对低通滤波器进行频率变换,转换为带阻滤波器[h,w]=freqs(M,N);%模拟带阻滤波器的幅频响应

plot(w/(2*pi),abs(h));grid;

xlabel('频率Hz');ylabel('幅度');title('模拟带阻滤波器');

[b,a]=bilinear(M,N,15000)%对模拟滤波器双线性变换

figure(1);

freqz(b,a);[H,W]=freqz(b,a); %绘出频率响应;

axis([0,1,-100,20]);

figure(2);

plot(W*fs/(2*pi),abs(H));grid on;

xlabel('频率/Hz');

ylabel('幅值');

n=0:199;t=n/fs;

x=sin(2*pi*400*t)+3*sin(2*pi*3000*t)+2*sin(2*pi*5000*t);

figure(3);

subplot(311);plot(t,x);axis([0,0.01,-5,5]);

title('输入信号');grid on;

y=filter(b,a,x);

subplot(312);stem(y,'.');title('输出序列');grid on;

ya=y*sinc(fs*(ones(length(n),1)*t-(n/fs)'*ones(1,length(t))));

subplot(313);plot(t,ya);axis([0,0.01,-3,3]);title('输出波形');grid on;

t=(0:100)/fs;

figure(4)

fs=1.5*10000;

n=(0:100)/fs;

f=sin(2*pi*400*t)+3*sin(2*pi*3000*t)+2*sin(2*pi*5000*t);

y=fftfilt(b,x);

[H1,f1]=freqz(f,[1]);

[H2,f2]=freqz(y,[1]);

f1=f1/pi*fs/2;

f2=f2/pi*fs/2;

subplot(2,1,1);plot(f1,abs(H1));title('输入信号的频谱');

subplot(2,1,2);plot(f2,abs(H2));title('输出信号的频谱');

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值