声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 12065|回复: 43

[滤波] 请教关于低通滤波器设计的问题

[复制链接]
发表于 2007-7-8 12:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我借鉴了前辈的一段程序!是把音频信号加噪声然后用低通滤波器滤波!然后比较!
用的是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);
[k,Wn]=buttord(OmegaP,OmegaS,1.1,60,'s');
[b,a]=butter(k,Wn,'s');
%freqs(b,a) %设计模拟的
[bz,az]=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 编辑 ]

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2007-7-8 17:08 | 显示全部楼层
本帖最后由 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);
[H,w]=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);
[k,Wn]=buttord(OmegaP,OmegaS,1,60,'s');
Wn=Wn/pi;  %转换成数字滤波器的Wn
[b,a]=butter(k,Wn);
%freqs(b,a) %设计模拟的
%[bz,az]=bilinear(b,a,T); %映射为数字的
% 绘制结果
[H,f]=freqz(b,a,1024,'whole',FS);
%figure(8);
plot(f,abs(H)); grid;
title('Butterworth滤波器的频率响应');
xlabel('频率(Hz)');
ylabel('幅值');
figure(2);
[db, mag, pha, grd,w]=freqz_m(b,a);
plot(w*FS/2/pi,db); grid;
title('Butterworth滤波器的频率响应');
xlabel('频率(Hz)');
ylabel('幅值(dB)');
响应曲线如下

blackman滤波器线性响应曲线

blackman滤波器线性响应曲线

Butterworth滤波器线性响应曲线

Butterworth滤波器线性响应曲线

Butterworth滤波器对数响应曲线

Butterworth滤波器对数响应曲线

评分

1

查看全部评分

发表于 2007-7-8 17:18 | 显示全部楼层

回复 #2 songzy41 的帖子

songzy41先生是我们信号版“一宝”,我们应该多向您学习啊
 楼主| 发表于 2007-7-8 18:33 | 显示全部楼层
谢谢你们能来教我!
我的图和你前两个是一样的!但横坐标是0 100 200 300 400 500 600
你的0.1 那些是什么啊 ?这个是低通的吗?
发表于 2007-7-8 21:00 | 显示全部楼层
本帖最后由 VibInfo 于 2016-10-17 15:18 编辑
原帖由 zhangnan3509 于 2007-7-8 17:18 发表
songzy41先生是我们信号版“一宝”,我们应该多向您学习啊

zhangnan3509版主,你可别这样说,我只是尽我的努力做了一点吧了。让我们共同努力把论坛越办越好。
发表于 2007-7-8 21:06 | 显示全部楼层

回复 #5 songzy41 的帖子

songzy41老师功力深厚,知识面宽广,还有很多的实践经验。
助人为乐,解答问题详尽、图文并茂,有耐心!

呵呵,总之值得我们学习的地方太多了!!!:handshake
发表于 2007-7-8 21:09 | 显示全部楼层
本帖最后由 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。

评分

1

查看全部评分

 楼主| 发表于 2007-7-9 11:55 | 显示全部楼层
宋老师真是为人热心!太谢谢您了
发表于 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);
[k,Wn]=buttord(OmegaP,OmegaS,1.1,60,'s');
FS是什么参数呀??FL和FH 是如何确定的???
还有为什么要换成OmegaP,OmegaS这两个参数呢
我们现在在做这个课程设计,太恼火了!!哪位大哥知道,指导一下哈!!:@)
发表于 2007-8-28 23:11 | 显示全部楼层

回复 #1 dstsc 的帖子

我问一个很弱智的问题,我设计出了滤波器但是不怎么会使用啊,谁能指教一下?:loveliness:
发表于 2007-8-29 09:06 | 显示全部楼层
本帖最后由 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 编辑 ]
发表于 2007-8-29 09:18 | 显示全部楼层
本帖最后由 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);
[k,Wn]=buttord(OmegaP,OmegaS,1.1,60,'s');
FS是什么参数呀??FL和FH 是如何确定的???
还有为什么要换成OmegaP,OmegaS这两个参数呢
我们现在在做这个课程设计,太恼火了!!哪位大哥知道,指导一下哈!!:@)

这是用双线性Z变换的方法设计数字滤波器。FS是采样频率,FL和FH 是设计低通滤波器中的通带和阻带,根据具体要求来设定。因为用的方法是双线性Z变换,要对频率先进行预畸(wrap),其原因可参看数字信号处理的书藉。
发表于 2007-8-29 09:42 | 显示全部楼层

回复 #11 songzy41 的帖子

可能是我的仿真信号频率有问题,所以出的结果不正确 我再好好看看。:loveliness:
发表于 2007-8-29 10:19 | 显示全部楼层

回复 #11 songzy41 的帖子

可我不知道为什么总得到这样的结果,滤波后的时频图是条直线啊
1.gif
发表于 2007-8-29 11:10 | 显示全部楼层
本帖最后由 VibInfo 于 2016-10-17 15:19 编辑
原帖由 zhangnan3509 于 2007-8-29 10:19 发表
可我不知道为什么总得到这样的结果,滤波后的时频图是条直线啊

能把程序传上来,我看看。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-18 10:30 , Processed in 0.067753 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表