声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 950|回复: 0

[滤波] 帮我看看带阻滤波我用错在哪里

[复制链接]
发表于 2010-4-8 16:00 | 显示全部楼层 |阅读模式

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

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

x
我打算处理心音信号,在信号的首、末端,尤其是末端出现严重失真不知道错在哪里,请高手帮我看看,谢谢了
%输入数字滤波器的技术指标
fp1 = 40; fp2 = 60;
fsl = 45;fs2 = 55;fz = 50;
rp=3; rs=20;
%滤波器的采样频率
Fs=2000;
%归一化处理
wp1=2*pi*fp1/Fs;
wp2=2*pi*fp2/Fs;
ws1=2*pi*fsl/Fs;
ws2=2*pi*fs2/Fs;
%转换为模拟滤波器的指标
wap1=tan(wp1/2);
wap2=tan(wp2/2);
was1=tan(ws1/2);
was2=tan(ws2/2);
%设计模拟带阻滤波器
[n,wn] = buttord([wap1 wap2],[was1 was2],rp,rs,'s');%计算最小阶数
[z,p,k] = buttap(n);
[b,a] = zp2tf(z,p,k);
%转换为数字带阻滤波器
wo=2*pi*fz/Fs;
bw=wap2 - wap1;
[bt,at] = lp2bs(b,a,wo,bw);%将模拟低通滤波器转换为模拟带阻滤波器,见959页
[bz,az] = bilinear(bt,at,1);%将模拟滤波器转换为数字滤波器,见101页
[h,w] = freqz(bz,az,4096,Fs);%得到频率响应向量,见865页
%读取心音信号
x=rheartsound;
N=length(x);
%利用数字滤波器进行滤波
nfft = N;
X1=fft(x,nfft);
XY=conv(abs(h),X1);%f=Convolution(X1,abs(h)');
xy=real(ifft(XY));
x=flipud(xy);
plot(x);
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-22 04:06 , Processed in 0.053969 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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