weipeng 发表于 2007-10-21 12:42

滤波程序是不是有问题,帮忙指教!

N=2048;
=wavread('d:\iii.wav'); %读取语音信号的数据,赋给变量x1
x1=x(1:N);
t=(0:N-1)/fs;
y1=fft(x1);         %对信号做FFT变换
f=fs*(0:N/2-1)/N;
figure(1)
pyy=y1.*conj(y1)/N;
subplot(2,1,1),plot(t,x1));%滤波前时域图
%设计滤波器
wp=10;ws=800;fs=8000;rp=0.5;rs=40;
=buttord(wp/(fs/2),ws/(fs/2),rp,rs,'z');
=butter(n,wn); %按二楼的意见进行了修改
%信号滤波
y=filter(b,a,x1);
X=fft(y);
subplot(2,1,2),plot(y);%滤波后时域图

figure(2)
subplot(2,1,1)
plot(f,pyy(1:N/2));% 滤波前功率谱图
pyy1=X.*conj(X)/N;
subplot(2,1,2)
plot(f,pyy1(1:N/2));滤波后功率谱图

滤波前后时域图如下:



滤波后的功率谱图如下:

从这两个图看起来我的程序好象有问题,请大家指教!谢谢!(我的声音信号理论上频率应该是15-400)。

[ 本帖最后由 zhlong 于 2007-10-25 22:46 编辑 ]

songzy41 发表于 2007-10-21 16:09

估计楼主的错误主要在语句:
=butter(n,wn);
它应为
=butter(n,wn);
和语句:
y=filter(b,a,x1);
相对应。

weipeng 发表于 2007-10-21 18:54

回复 #2 songzy41 的帖子

问题解决了,谢谢!
页: [1]
查看完整版本: 滤波程序是不是有问题,帮忙指教!