声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1168|回复: 2

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

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

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

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

x
N=2048;
[x,fs,NBITS]=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;
[n,wn]=buttord(wp/(fs/2),ws/(fs/2),rp,rs,'z');
[b,a]=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));滤波后功率谱图

滤波前后时域图如下:

1-1.jpg

滤波后的功率谱图如下:
2.jpg
从这两个图看起来我的程序好象有问题,请大家指教!谢谢!(我的声音信号理论上频率应该是15-400)。

[ 本帖最后由 zhlong 于 2007-10-25 22:46 编辑 ]
1.jpg
回复
分享到:

使用道具 举报

发表于 2007-10-21 16:09 | 显示全部楼层
估计楼主的错误主要在语句:
[a,b]=butter(n,wn);
它应为
[b,a]=butter(n,wn);
和语句:
y=filter(b,a,x1);
相对应。

评分

1

查看全部评分

 楼主| 发表于 2007-10-21 18:54 | 显示全部楼层

回复 #2 songzy41 的帖子

问题解决了,谢谢!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-16 03:29 , Processed in 0.151250 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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