首页 > 编程知识 正文

脉搏波检测电路,脉搏波数据分析

时间:2023-05-06 00:40:20 阅读:269912 作者:1197

脉搏波信号处理 %信号采样N = 256;fs = fr;data = data(1:N);n = 1:N;t = n/fs;plot(t,data); 123456 首先,我们将原始一维脉搏波信号做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; 123456

求出原始信号的频谱,由于脉搏信号的频率大约在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'); 12345678910111213

滤波去频率响应如上图所示,可见其基本符合设计要求。 接下来将原始信号用所设计的滤波器进行滤波,matlab中,只需要知道滤波器分子分母系数,就可以用filter函数直接进行滤波了。 % 滤波器滤波nData=filter(b,a,data);nDataAbs = abs(fft(nData, 256));figure; plot(f, nDataAbs);figure; plot(nData); 12345

画出了滤波信号的频谱图和原始数据,可见其已经达到了滤波要求。 原创Terrenceyuu的博客 https://blog.csdn.net/terrenceyuu/article/details/78400311

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。