|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
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); |
|