声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1594|回复: 9

[综合讨论] 关于声音信号滤波的问题!求助!

[复制链接]
发表于 2006-9-28 17:19 | 显示全部楼层 |阅读模式

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

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

x
我有一段机械振动声音信号,用matlab读取数据后,想通过
b=fir1(348,1000/fs,'high');%fs为我的语音采样频率
freqz(b,1,512)
xx=filter(b,1,x);%x为读出的语音信号数据是一个一维数组
上面的代码滤波,得到的 x的 1000hz 以上的信号xx,然后对xx做频谱分析,
理论上经过上面的滤波后是应该1000hz以下的信号会消失的,但是我频谱做出来后发现 低频信号(1000hz以下的信号)还是存在,而且和滤波前的幅值啊什么的 都差不多,也就是说上面的代码根本没有起到 高通滤波的效果,请高手指点啊这是为什么啊? 我错在哪里啊? 原先以为滤波器阶数太低效果差,可我上面的阶数已经很大了啊为什么还是 没有效果??
而且我发现如果我用低通滤波器滤掉1000hz以上的信号后,发现原来低通信号也都几乎被虑掉了 真是奇怪啊 请高手帮忙啊! 小弟在线等待!!!!!        非常急!!!!!!!!!!!!!!!!!!!! 求各位大虾帮忙啊!!!!!!!!

[ 本帖最后由 lxq 于 2006-9-28 21:17 编辑 ]
回复
分享到:

使用道具 举报

发表于 2006-9-28 17:40 | 显示全部楼层
fir1的格式用错了。fir1(n,Wn)中n是阶数,Wn是和截止频率有关,它等于截止频率fc和fs/2之比。当Wn=1时即截止频率fc=fs/2。因此楼主的b应为:
b=fir1(348,1000/(fs/2),'high');

评分

1

查看全部评分

 楼主| 发表于 2006-9-30 15:39 | 显示全部楼层
songzy41 :谢谢你发现我的错误! 但是这个错误并没有和我的问题有直接的联系!因为我的fs=22050,如果我没有×1/2那么就是说相当于我 7虑掉了 1000*2=2000Hz以下的波,那为什么还是会出现我上面提到的问题呢?
就算按我上面的错误写法我 2000hz以下的应该 被虑掉啊,但是出来的频谱图上 低频信号几乎都在,这是什么原因啊?
发表于 2006-9-30 16:00 | 显示全部楼层
我估计有可能你的数据太短。你不妨把你的数据上传上来,以便分析。
 楼主| 发表于 2006-9-30 21:12 | 显示全部楼层
songzy41:不是数据短的原因,我的声音是用mic录的,要多长有多长。
问题是 这个滤波为什么高通虑一次后,低频段的依然存在?而且不管我这个高频截至频率有设为多大都没用?
当时我还以为我的高频截至频率设的太低了,以至于低频段处在了过渡区所以保留了下来,但是我把高频截至频率提高到了1000Hz了,我的低频段依然清晰可见!顺便说句,我的低频信号频率是在100hz 以下。
实在是一头雾水啊!

[ 本帖最后由 ChaChing 于 2010-5-10 00:35 编辑 ]
 楼主| 发表于 2006-9-30 21:15 | 显示全部楼层
songzy41:能否加我QQ:13609731;请您请点下!
发表于 2006-10-3 11:00 | 显示全部楼层
我按你的滤波器设计,用一个信号(信号由100hz和3000hz所组成)去仿真滤波,可看到100hz的低频信号在滤波后完全消失了。程序为:
fs=10000;
N=10000;
b=fir1(348,1000/fs,'high');%fs为我的语音采样频率
freqz(b,1,512);
t=(0:N-1)/fs;
N2=1:N/2;
n2=N/2;
x=15*sin(2*pi*100*t)+10*sin(2*pi*3000*t);
figure(2);
subplot 221; plot(x(1000:1200));
title('Waveform before filter');
axis([1 200 -25 25]); grid;
X=fft(x);
subplot 222; plot(abs(X(N2))/n2);
title('Spectrum before filter');
axis([0 5000 0 15]); grid;
xx=filter(b,1,x);
subplot 223; plot(xx(1000:1200));
title('Waveform after filter');
axis([1 200 -15 15]); grid;
XX=fft(xx);
subplot 224; plot(abs(XX(N2))/n2);
title('Spectrum after filter');
axis([0 5000 0 15]); grid;
下图笫一张图是滤波器的频响,笫二张图是滤波前后波形和频谱图的比较。从图中可看到滤波后,不论从波形图上还是谱图上,低频的100hz完全被滤掉了。

滤波器频响

滤波器频响

滤波前后波形和谱图比较

滤波前后波形和谱图比较

评分

1

查看全部评分

 楼主| 发表于 2006-10-5 22:54 | 显示全部楼层
songzy41:你上面的方法我试过,确实高通,低通效果都很明显,但是为什么用来分析现实的信号,竟然不起作用?
能留给我你的QQ 或者email吧 我把我的程序和信号发给你看下.可以吗?我QQ:13609731
发表于 2006-10-6 06:45 | 显示全部楼层
我的email是songzy41@126.com,你可以把现实数据发给我看看。
 楼主| 发表于 2006-10-13 17:53 | 显示全部楼层
songzy41:您在线吗? 我给您发了email 了不知道您收到没?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-12 17:17 , Processed in 0.076506 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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