chen_adam 发表于 2006-9-28 17:19

关于声音信号滤波的问题!求助!

我有一段机械振动声音信号,用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 编辑 ]

songzy41 发表于 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');

chen_adam 发表于 2006-9-30 15:39

songzy41 :谢谢你发现我的错误! 但是这个错误并没有和我的问题有直接的联系!因为我的fs=22050,如果我没有×1/2那么就是说相当于我 7虑掉了 1000*2=2000Hz以下的波,那为什么还是会出现我上面提到的问题呢?
就算按我上面的错误写法我 2000hz以下的应该 被虑掉啊,但是出来的频谱图上 低频信号几乎都在,这是什么原因啊?

songzy41 发表于 2006-9-30 16:00

我估计有可能你的数据太短。你不妨把你的数据上传上来,以便分析。

chen_adam 发表于 2006-9-30 21:12

songzy41:不是数据短的原因,我的声音是用mic录的,要多长有多长。
问题是 这个滤波为什么高通虑一次后,低频段的依然存在?而且不管我这个高频截至频率有设为多大都没用?
当时我还以为我的高频截至频率设的太低了,以至于低频段处在了过渡区所以保留了下来,但是我把高频截至频率提高到了1000Hz了,我的低频段依然清晰可见!顺便说句,我的低频信号频率是在100hz 以下。
实在是一头雾水啊!

[ 本帖最后由 ChaChing 于 2010-5-10 00:35 编辑 ]

chen_adam 发表于 2006-9-30 21:15

songzy41:能否加我QQ:13609731;请您请点下!

songzy41 发表于 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(); grid;
X=fft(x);
subplot 222; plot(abs(X(N2))/n2);
title('Spectrum before filter');
axis(); grid;
xx=filter(b,1,x);
subplot 223; plot(xx(1000:1200));
title('Waveform after filter');
axis(); grid;
XX=fft(xx);
subplot 224; plot(abs(XX(N2))/n2);
title('Spectrum after filter');
axis(); grid;
下图笫一张图是滤波器的频响,笫二张图是滤波前后波形和频谱图的比较。从图中可看到滤波后,不论从波形图上还是谱图上,低频的100hz完全被滤掉了。

chen_adam 发表于 2006-10-5 22:54

songzy41:你上面的方法我试过,确实高通,低通效果都很明显,但是为什么用来分析现实的信号,竟然不起作用?
能留给我你的QQ 或者email吧 我把我的程序和信号发给你看下.可以吗?我QQ:13609731

songzy41 发表于 2006-10-6 06:45

我的email是songzy41@126.com,你可以把现实数据发给我看看。

chen_adam 发表于 2006-10-13 17:53

songzy41:您在线吗? 我给您发了email 了不知道您收到没?
页: [1]
查看完整版本: 关于声音信号滤波的问题!求助!