请教关于低通滤波器设计的问题
我借鉴了前辈的一段程序!是把音频信号加噪声然后用低通滤波器滤波!然后比较!用的是Butterworth滤波器和blackman滤波器~但两个的频谱图错了~
我不知道是参数问题还是什么问题~大家指教下啊!
是不是要把音频的一些参数弄出来然后计算什么的啊!
我是一菜鸟~被老师一问就什么都不懂了~大家教教我啊!
blackman滤波器设计
Window=blackman(55); %长度为35的blackman窗Window
b=fir1(54,0.1,Window);%产生低通blackman滤波器
H=freqz(b,1,512);
figure(6);
plot(abs(H));
title('blackman滤波器的频率响应');
xlabel('频率/Hz');
ylabel('声强/db');
Butterworth滤波器设计
FS=1;
%通带、阻带截止频率
Fl=0.08;Fh=0.15;
%频率预畸
wp=(Fl/FS)*2*pi; %临界频率采用角频率表示
ws=(Fh/FS)*2*pi; %临界频率采用角频率表示
OmegaP=2*FS*tan(wp/2);
OmegaS=2*FS*tan(ws/2);
=buttord(OmegaP,OmegaS,1.1,60,'s');
=butter(k,Wn,'s');
%freqs(b,a) %设计模拟的
=bilinear(b,a,FS); %映射为数字的
% 绘制结果
H=freqz(bz,az,1024,FS,'whole');
figure(8);
plot(abs(H));
title('Butterworth滤波器的频率响应');
xlabel('频率/Hz');
ylabel('声强/db');
[ 本帖最后由 eight 于 2007-10-30 09:20 编辑 ] 本帖最后由 VibInfo 于 2016-10-17 15:18 编辑
原帖由 dstsc 于 2007-7-8 12:13 发表
我借鉴了前辈的一段程序!是把音频信号加噪声然后用低通滤波器滤波!然后比较!
用的是Butterworth滤波器和blackman滤波器~但两个的频谱图错了~
我不知道是参数问题还是什么问题~大家指教下啊!
是不是要把音频的一些参数弄出来然后计算什么的啊!
我是一菜鸟~被老师一问就什么都不懂了~大家教教我啊!
blackman滤波器设计改为:
%blackman滤波器设计
Window=blackman(55); %长度为35的blackman窗Window
b=fir1(54,0.1,Window);%产生低通blackman滤波器
%freqz(b,1,512);
=freqz(b,1,512);
plot(w/pi,abs(H)); grid;
title('blackman滤波器的频率响应');
xlabel('归一化频率');
ylabel('幅值');
给出的频率是归一化频率,Y轴不是声强/db,而是线性幅值。Butterworth滤波器设计改为
%Butterworth滤波器设计
FS=1;
T=1/FS;
%通带、阻带截止频率
Fl=0.08;Fh=0.15;
%频率预畸
wp=(Fl/FS)*2*pi; %临界频率采用角频率表示
ws=(Fh/FS)*2*pi; %临界频率采用角频率表示
%为双线性z变换进行频率变换
OmegaP=2*FS*tan(wp/2);
OmegaS=2*FS*tan(ws/2);
=buttord(OmegaP,OmegaS,1,60,'s');
Wn=Wn/pi;%转换成数字滤波器的Wn
=butter(k,Wn);
%freqs(b,a) %设计模拟的
%=bilinear(b,a,T); %映射为数字的
% 绘制结果
=freqz(b,a,1024,'whole',FS);
%figure(8);
plot(f,abs(H)); grid;
title('Butterworth滤波器的频率响应');
xlabel('频率(Hz)');
ylabel('幅值');
figure(2);
=freqz_m(b,a);
plot(w*FS/2/pi,db); grid;
title('Butterworth滤波器的频率响应');
xlabel('频率(Hz)');
ylabel('幅值(dB)');
响应曲线如下
回复 #2 songzy41 的帖子
songzy41先生是我们信号版“一宝”,我们应该多向您学习啊 谢谢你们能来教我!我的图和你前两个是一样的!但横坐标是0 100 200 300 400 500 600
你的0.1 那些是什么啊 ?这个是低通的吗? 本帖最后由 VibInfo 于 2016-10-17 15:18 编辑
原帖由 zhangnan3509 于 2007-7-8 17:18 发表
songzy41先生是我们信号版“一宝”,我们应该多向您学习啊
zhangnan3509版主,你可别这样说,我只是尽我的努力做了一点吧了。让我们共同努力把论坛越办越好。
回复 #5 songzy41 的帖子
songzy41老师功力深厚,知识面宽广,还有很多的实践经验。助人为乐,解答问题详尽、图文并茂,有耐心!
呵呵,总之值得我们学习的地方太多了!!!:handshake 本帖最后由 VibInfo 于 2016-10-17 15:18 编辑
原帖由 dstsc 于 2007-7-8 18:33 发表
谢谢你们能来教我!
我的图和你前两个是一样的!但横坐标是0 100 200 300 400 500 600
你的0.1 那些是什么啊 ?这个是低通的吗?
你的图从0~1024是样点数,没有转成频率(包括你引用的帖子:http://www.chinavib.com/forum/thread-36508-1-1.html,它的图中给出的也是样点数),而我给的图,blackman滤波器中因你没有给出采样频率,用归正化频率表示;Butterworth滤波器中你给出了采样频率FS=1,横轴便是频率。ds2a图中0.1 是相对归一化频率(fs/2)的值;ds3a图中0.1 是0.1 Hz。 宋老师真是为人热心!太谢谢您了 Butterworth滤波器设计
FS=1;
%通带、阻带截止频率
Fl=0.08;Fh=0.15;
%频率预畸
wp=(Fl/FS)*2*pi; %临界频率采用角频率表示
ws=(Fh/FS)*2*pi; %临界频率采用角频率表示
OmegaP=2*FS*tan(wp/2);
OmegaS=2*FS*tan(ws/2);
=buttord(OmegaP,OmegaS,1.1,60,'s');
FS是什么参数呀??FL和FH 是如何确定的???
还有为什么要换成OmegaP,OmegaS这两个参数呢
我们现在在做这个课程设计,太恼火了!!哪位大哥知道,指导一下哈!!:@)
回复 #1 dstsc 的帖子
我问一个很弱智的问题,我设计出了滤波器但是不怎么会使用啊,谁能指教一下?:loveliness: 本帖最后由 VibInfo 于 2016-10-17 15:18 编辑原帖由 zhangnan3509 于 2007-8-28 23:11 发表
我问一个很弱智的问题,我设计出了滤波器但是不怎么会使用啊,谁能指教一下?:loveliness:
如果已设计出了滤波器,就是求出了数字滤波器的系数:a和b,那可以用filter函数对输入序列进行滤波了,设输入序列为x,输出序列为y,有
y=filter(b,a,x)
[ 本帖最后由 songzy41 于 2007-8-29 09:07 编辑 ] 本帖最后由 VibInfo 于 2016-10-17 15:19 编辑
原帖由 tianma 于 2007-7-10 21:59 发表
Butterworth滤波器设计
FS=1;
%通带、阻带截止频率
Fl=0.08;Fh=0.15;
%频率预畸
wp=(Fl/FS)*2*pi; %临界频率采用角频率表示
ws=(Fh/FS)*2*pi; %临界频率采用角频率表示
OmegaP=2*FS*tan(wp/2);
OmegaS=2*FS*tan(ws/2);
=buttord(OmegaP,OmegaS,1.1,60,'s');
FS是什么参数呀??FL和FH 是如何确定的???
还有为什么要换成OmegaP,OmegaS这两个参数呢
我们现在在做这个课程设计,太恼火了!!哪位大哥知道,指导一下哈!!:@)
这是用双线性Z变换的方法设计数字滤波器。FS是采样频率,FL和FH 是设计低通滤波器中的通带和阻带,根据具体要求来设定。因为用的方法是双线性Z变换,要对频率先进行预畸(wrap),其原因可参看数字信号处理的书藉。
回复 #11 songzy41 的帖子
可能是我的仿真信号频率有问题,所以出的结果不正确 我再好好看看。:loveliness:回复 #11 songzy41 的帖子
可我不知道为什么总得到这样的结果,滤波后的时频图是条直线啊 本帖最后由 VibInfo 于 2016-10-17 15:19 编辑原帖由 zhangnan3509 于 2007-8-29 10:19 发表
可我不知道为什么总得到这样的结果,滤波后的时频图是条直线啊
能把程序传上来,我看看。