24小时热门版块排行榜    

查看: 702  |  回复: 0

cr153

新虫 (初入文坛)

[求助] matlab信号处理,两段设计带阻滤波器的代码,报错或运行异常,求解

滤波器设计程序一
n=6 ; %设计阶数为6的Butterworth模拟原型滤波器
[z,p,k]=buttap(n)
[b,a]=zp2tf(z,p,k);%将零点极点增益形式转化传递函数形式
[H,w]=freqs(b,a,0:0.01:2);%计算指定频率点的复数频率响应
subplot(2,1,1),plot(w,abs(H).^2);%绘制平方幅度响应
xlabel('w/wc');ylabel('Butterworth ︳H(jw) ︳^2');
title('Butterworth 低通原型滤波器(wc=1)')
hold on;
figure(1)
grid on;
end
figure(2)
hold on;
n=6 ;%设计阶数为6的Butterworth模拟带阻滤波器
[z,p,k]=buttap(n);
[b,a]=zp2tf(z,p,k);
f0=2200;bw=3600;%中心点频率和阻带带宽
[bt,at]=lp2bs(b,a,f0,bw);%频率转换
[Ht,ft]=freqs(bt,at,0:2:400);%计算带阻滤波器指定频率点的复数频率响应
plot(ft,abs(Ht).^2);%%绘制平方幅度响应
xlabel('f/hz');ylabel('Butterworth ︳H(jw) ︳^2');
title('Butterworth 带阻滤波器(f0=2200,bw=3600)');

grid on;end



滤波器设计程序二

Fs=50000;%滤波器最大频带
ws=400;%滤波器阻带截止频率
wp=4000;%滤波器通带截止频率
rp=1;%通带衰减
rs=21;%阻带衰减
[N,Wc]=buttord(wp/(Fs/2),ws/(Fs/2),rp,rs);%估算阶数
Wn = [wp/(Fs/2) ws/(Fs/2)];
[B,A] = BUTTER(N,Wn,'stop');设计一个带阻滤波器

[h,f]=freqz(B,A,8000);%带阻滤波器频率响应
subplot(4,1,3);

plot(w/pi,abs(h));
grid;
title('BW型带阻滤波器');


第一个滤波器设计,我使用自己的wave文件,滤波后只剩下尖锐的高频,感觉不应该这样啊
第二个滤波器设计,直接报错,运行不成功
错误信息:[B,A] = BUTTER(N,Wn,'stop');设计一个带阻滤波器
                                |
Error: Missing variable or function.

我不是信号处理方向的,最近只研究了一些理论背景资料,所以这些代码涉及数学运算方面的看不太懂,滤波器的一些特性还是知道的。
求懂的朋友解释一下,或者帮忙运行查错一下。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 cr153 的主题更新
信息提示
请填处理意见