脉搏波信号处理

脉搏波信号处理

%信号采样
N = 256;fs = fr;
data = data(1:N);
n = 1:N;
t = n/fs;
plot(t,data);
  • 首先,我们将原始一维脉搏波信号做256点的采样,以便其方便fft计算。采样频率和原信号的频率一样均为30hz。

这里写图片描述

  • 画出此信号,可见其包含一些高低频的噪声。

y=fft(data,N);    %对信号进行快速Fourier变换
mag=abs(y);     %求得Fourier变换后的振幅
f=n*fs/N;    %频率序列
figure, plot(f,mag);   %绘出随频率变化的振幅
xlabel('频率/Hz');
ylabel('振幅');title('N=256');grid on;

这里写图片描述

  • 求出原始信号的频谱,由于脉搏信号的频率大约在42bps-180bps之间,也就是0.7hz-3.0hz。在这个频率区间之外的可以认定为噪声,所以接下来需要一个带通滤波器来滤除噪声。

  • 这里采样巴特沃兹带通滤波,其通带范围fp是[0.7,3.5],阻带截至[0.5 5]。要求带边频率衰减<=3db; 0.5hz以下5hz以上衰减>=18db (10^(-3/20)=0.707; 10^(-18/20)=0.125 )。
% 设计巴特沃兹带通滤波
fp=[0.7 3.5];fs=[0.5 5]; 
rp=3;rs=18; 
Fs=30; 
wp=fp*2*pi/Fs;ws=fs*2*pi/Fs; 
[n,wn]=buttord(wp/pi,ws/pi,rp,rs);
[b,a]=butter(n,wp/pi); 
[h,w]=freqz(b,a,256,Fs); 
% h=20*log10(abs(h)); 
figure;
plot(w,abs(h));grid;
ylabel('Bandpass DF') ;
xlabel('Hz');

这里写图片描述

  • 滤波去频率响应如上图所示,可见其基本符合设计要求。

  • 接下来将原始信号用所设计的滤波器进行滤波,matlab中,只需要知道滤波器分子分母系数,就可以用filter函数直接进行滤波了。
% 滤波器滤波
nData=filter(b,a,data);
nDataAbs = abs(fft(nData, 256));
figure; plot(f, nDataAbs);
figure; plot(nData);

这里写图片描述

这里写图片描述

  • 画出了滤波信号的频谱图和原始数据,可见其已经达到了滤波要求。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值