脉搏信号分析综合训练实例Word格式.docx
《脉搏信号分析综合训练实例Word格式.docx》由会员分享,可在线阅读,更多相关《脉搏信号分析综合训练实例Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
提前告知被试者近期好好休息,保持良好的生理、心理状况。
2、实验开始前通过健康状况调查表确保受试者无眼病,无眼病家族史、心理病史,无全身疾病,右利手者,评测受试者此时感觉非常清醒,心理状态良好。
3、给被试者佩戴信号采集设备,此后让被试者调整自己的坐姿以及显示器的高度位置,尽量使自己处于较舒适的状态。
4、VDT作业之前,采集被试者的脉搏信号数据,时间持续10分钟,并将此段数据保存为实验前数据段。
5、被试者在放松状态下,完成120分钟的VDT作业,并对整个实验过程的脉搏信号数据进行实时采集,将数据保存为“实验过程中数据”。
6、通过主观问卷测评受试者有无视觉疲劳症状,是否已处于视觉疲劳状态。
7、关掉电脑显示器,被试者闭眼休息,同时采集该过程的数据进行采集。
30分钟以后结束数据采集,保存为“疲劳恢复数据段”。
如图2.1,为实验过程中采集到的一段脉搏信号:
图2.1实验中采集到的脉搏信号
2.3信号预处理
人体的脉搏信号是一种微弱的信号,信噪比比较的低,正常人的脉象信号在0~20Hz的频率范内,且大约99%的能量分布在0~10Hz,在检测和采集时,由于受到仪器,人体方面的影响,所采集的信号中通常包括干扰信号,如图2.1中的脉搏信号,其中最主要的干扰信号有:
(1)基线漂移、人体呼吸等低频干扰,频率小于1Hz;
(2)工频干扰,是固定频率的干扰,频率为50Hz;
(3)其他一些干扰信号,主要是高频干扰。
所以,为了对信号做准确的分析,在分析处理之前必须做一些必要的预处理。
针对信号中存在噪声的特点,基线漂移和呼吸等低频干扰在1Hz以下,而脉搏信号主要在低频范围,所以可以设计让信号先通过一个带通滤波器,借以滤除基线漂移、呼吸引起的干扰(考虑到不丢失太多的其他信息,通带截止频率设置为Wp=[0.9,50],阻带截止频率设置为Ws=[0.1,200],通带波纹系数Rp=0.5,阻带波纹系数Rs=40),然后再通过一个陷波滤波器滤除固定的工频干扰(通带截止频率设置为Wp=[48,52],阻带截止频率Ws=[49,51],通带波纹系数Rp=0.5,阻带波纹系数Rs=40)。
在设计滤波器前,介绍一下常用数字滤波器知识:
数字滤波器可分为无限冲激响应数字滤波器(IIR)和有限冲激响应数字滤波器(FIR),其具体设计过程不再详述,就一些性能区别作简介。
从性能上说,IIR数字滤波器可用较低的阶数获得高的选择性,幅频特性好,但缺点是相位不是严格线性的。
相反,FIR滤波器却可以得到严格的线性相位,但FIR只能用较高的阶数达到高的选择性;
对于同样的滤波器设计指标,FIR滤波器所要求的阶数可以比IIR滤波器高5到10倍,成本较高,信号延时也较大。
综合我们选用IIR滤波器,对常用一些IIR滤波器性能做比较。
利用Butterworth滤波器、ChebysheveI型滤波器、Che-bysheveⅡ型滤波器、椭圆滤波器都可以进行低通、高通、带通、带阻滤波器的设计,但是各有特点。
其中Butterworth滤波器通带内的幅频响应曲线能得到最大限度的平滑,但牺牲了截止频率的坡度;
ChebysheveI型滤波器通带内等波纹,阻带内单调;
ChebysheveⅡ型滤波器通带内单调,然而阻带内等波纹;
椭圆滤波器阻带和通带内都是等波纹的,但下降的坡度更大,而且可以以更低的阶数实现和其他两类滤波器一样的性能指标。
设计滤波器时要根据实际情况综合考虑截止特性和相位失真的要求等要求。
截止特性好的,相位失真就严重,两者不可兼得。
Matlab信号工具箱提供直接设计IIR数字滤波器的函数,直接调用这些函数就可以很方便地设计满足我们要求的滤波器,常用数字滤波器的函数如下:
1)Butterworth数字滤波器设计:
调用格式:
[N,Wn]=buttord(Wp,Ws,Rp,Rs);
[b,a]=butter(N,Wn,’ftype’);
功能:
[N,Wn]=buttord(Wp,Ws,Rp,Rs),在给定滤波器性能的情况下(通带截止频率Wp、阻带截止频率Ws、通带内最大衰减Rp和阻带内最小衰减Rs),计算Butterworth滤波器的阶数N和截止频率Wn。
[b,a]=butter(n,Wn,’ftype’),根据阶数N和截止频率Wn计算Butterworth滤波器分子分母系数(b为分子系数的矢量形式,a为分母系数的矢量形式),ftype为设计滤波器的类型,ftype=high时,为高通滤波器;
ftype=bandpass时,为带通滤波器;
ftype=stop时,为带阻滤波器,类型不写时默认为低通滤波器。
2)ChebyshevⅠ型数字滤波器设计:
[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs);
[b,a]=cheby1(N,Rp,Wn,'
ftype'
);
3)ChebyshevⅡ数字滤波器设计:
[N,Wn]=cheb2ord(Wp,Ws,Rp,Rs);
[b,a]=cheby2(N,Rp,Wn,'
4)椭圆滤波器设计:
[N,Wn]=ellipord(Wp,Ws,Rp,Rs);
[b,a]=ellip(N,Rp,Rs,Wp);
ChebyshevⅠ、ChebyshevⅡ和椭圆滤波器设计所用MATLAB函数的功能具体使用时可查看MATLAB中的帮助文件。
5)零相位数字滤波
y=filtfilt(b,a,x);
y=filtfilt(b,a,x)对输入信号x做前向和反向处理,实现零相位数字滤波。
b、a分别为滤波器传递函数的分子和分母系数向量(按降幂排列)。
由于Butterworth滤波器通带内有最大的平滑特性,信号经过后衰减小,因此我们选用Butterworth带通滤波器滤除基线漂移和呼吸等引起的干扰,但由于IIR滤波器本身固有的缺点,信号通过Butterworth带通滤波器后相位会失真,故我们可设计零相位Butterworth带通滤波器去噪。
50Hz固定工频在频域中是一个点,因而要求设计的带阻滤波器有好的截止特性,而切比雪夫II型滤波器有较好的截止特性,并且在其通带内单调,故而设计零相位切比雪夫II型滤波器滤除工频干扰。
所设计的巴特沃斯和切比雪夫II型滤波器幅频响应,如图2.2和2.3:
图2.2Butterworth带通滤波器幅频响应
图2.3ChebysheveII型带阻滤波器幅频响应
将图2.1中含有噪声的脉搏信号变换到频域中,借以观察滤波前信号所含有的频率成分,如图2.4:
图2.4含有噪声脉搏信号频谱图
将图2.1中的含有噪声的脉搏信号分别通过所设计的Butterworth带通滤波器和ChebysheveII型带阻滤波器,借以滤除噪声干扰信号。
经过滤波后的脉搏信号如图2.5,将其变换到频域中,观察滤波后信号中所含频率成分,如图2.6
图2.5去除噪声后的脉搏信号
图2.6滤除干扰后脉搏信号频谱图
在频域中从图2.4和图2.6中对比可以明显的看出,在低频有一幅度很大的信号已经被滤除,而这正好是信号中所含的基线漂移和呼吸干扰信号。
在时域中从图2.1和图2.5中也可以很明显的看出信号中所含的基线漂移信号已经去除。
设计滤波器及去噪程序代码:
%巴特沃斯带通滤波器设计;
fs=1000;
%采样频率
wp=[0.9,50]/(fs/2);
%设置通带截止频率;
ws=[0.1,200]/(fs/2);
%设置阻带截止频率;
rp=0.5;
%通带波纹系数;
rs=40;
%阻带波纹系数;
[N,wc]=buttord(wp,ws,rp,rs);
[num,den]=butter(N,wc);
[H,W]=freqz(num,den);
plot(fs*W/(2*pi),abs(H));
title('
butterworth带通滤波器幅频响应'
);
xlabel('
频率'
ylabel('
幅度'
gridon;
x1=filtfilt(num,den,x);
%通过零相位滤波器滤除基线漂移等干扰信号;
%切比雪夫II型滤波器设计;
wp1=[48,52]/(fs/2);
%通带截止频率;
ws1=[49,51]/(fs/2);
%阻带截止频率;
rp1=0.5;
通带波纹系数;
rs1=40;
阻带波纹系数;
[N1,wc1]=cheb2ord(wp1,ws1,rp1,rs1);
[num1,den1]=cheby2(N1,rp1,wc1,'
stop'
[H1,W1]=freqz(num1,den1);
plot(fs*W1/(2*pi),abs(H1));
切比雪夫II型滤波器幅频响应'
x2=filtfilt(num1,den1,x1);
%通过零相位滤波器滤除工频干扰;
2.4脉搏信号时域特征提取
脉搏信号的特征提取是脉搏信号分析中的关键,能不能准确的提取出来脉搏信号的特征关系到能不能准确的分析脉搏信号,其时域中提取的主要特征有脉搏的峰值、周期等。
而在这其中最重要的是峰值的提取,准确的提取出来峰值,可为进一步分析其周期,脉率等其他参数打下基础,如图2.7显示的脉搏波,h为脉搏波形的高度。
图2.7脉搏波形的高度
提取信号的峰值基本思想是基于阈值的方法,统计分析采集到得脉搏信号发现,虽然每个脉搏波的波峰值大小并不相同,但他们总在一个范围内波动,波动的范围基本上不超过最大波形高度的0.3倍,为了更为可靠的检测波峰,以0.4倍为参考。
因此可以认为波峰点是在每个脉搏周期中波形的最大值附近,大于其邻域内所有点的点。
由于所用数据采样频率为1000HZ,通过对大量脉搏波测量数据分析,把邻域长度定义为400个数据点可以准确识别波峰点。
假设采集到的脉搏波为数字信号序列P[j],j∈[0,N],实际波峰P[jp]的判别条件为:
(max{P[j]}-P[jp])≤Δ
P[jp]≥P[j],j∈[jp-200,jp+200]
公式中,Δ=(max{P[j]}-min{P[j]})×
0.4,jp为波峰点的位置。
提取出波峰点的位置后,其他时域的特征,如周期、脉率等可相应而出。
峰值提取程序流程如下:
峰值检测序列如图2.8:
图2.8峰值检测序列
峰值检测程序源代码:
%峰值检测;
PM=max(x2);
%取整个信号最大值;
G=(PM-min(x2))*0.4;
%设置阈值;
cnt=0;
%设置计数器;
fori=1:
length(x2)
ifPM-x2(i)<
G&
&
x2(i)==max(x2(i-200:
i+200))
P(c