医学信号处理实验报告心脑电信号认知Word文件下载.docx

上传人:b****1 文档编号:3874913 上传时间:2023-05-02 格式:DOCX 页数:15 大小:356.43KB
下载 相关 举报
医学信号处理实验报告心脑电信号认知Word文件下载.docx_第1页
第1页 / 共15页
医学信号处理实验报告心脑电信号认知Word文件下载.docx_第2页
第2页 / 共15页
医学信号处理实验报告心脑电信号认知Word文件下载.docx_第3页
第3页 / 共15页
医学信号处理实验报告心脑电信号认知Word文件下载.docx_第4页
第4页 / 共15页
医学信号处理实验报告心脑电信号认知Word文件下载.docx_第5页
第5页 / 共15页
医学信号处理实验报告心脑电信号认知Word文件下载.docx_第6页
第6页 / 共15页
医学信号处理实验报告心脑电信号认知Word文件下载.docx_第7页
第7页 / 共15页
医学信号处理实验报告心脑电信号认知Word文件下载.docx_第8页
第8页 / 共15页
医学信号处理实验报告心脑电信号认知Word文件下载.docx_第9页
第9页 / 共15页
医学信号处理实验报告心脑电信号认知Word文件下载.docx_第10页
第10页 / 共15页
医学信号处理实验报告心脑电信号认知Word文件下载.docx_第11页
第11页 / 共15页
医学信号处理实验报告心脑电信号认知Word文件下载.docx_第12页
第12页 / 共15页
医学信号处理实验报告心脑电信号认知Word文件下载.docx_第13页
第13页 / 共15页
医学信号处理实验报告心脑电信号认知Word文件下载.docx_第14页
第14页 / 共15页
医学信号处理实验报告心脑电信号认知Word文件下载.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

医学信号处理实验报告心脑电信号认知Word文件下载.docx

《医学信号处理实验报告心脑电信号认知Word文件下载.docx》由会员分享,可在线阅读,更多相关《医学信号处理实验报告心脑电信号认知Word文件下载.docx(15页珍藏版)》请在冰点文库上搜索。

医学信号处理实验报告心脑电信号认知Word文件下载.docx

3)对于所有大于阈值的峰值点作为检测到的R波尖峰。

4)由生理基础可以知道,R波间隔是相对稳定的。

可以通过检测峰值点的间隔,去除那些较高的伪迹。

3.Pan-Tompkins法检测心电R波尖峰

1)将信号分别通过给定的低通滤波器、高通滤波器

2)对滤波后的信号求一阶导数

3)对求导之后的信号进行平方运算

4)将信号通过滑动窗口进行积分,这里选取窗口长度为30

5)应用阈值法检测经过前四步处理之后的心电信号R波尖峰

流程图如下图所示

其演示效果如下图所示

5、实验目的:

1)周期图法的改进方法,和分段平均对图像数据的影响。

2)能够利用两种方法处理心电波形并计算一些特征值。

6、实验内容:

(一)上机题3:

改进周期图法估计功率谱

1、接着上机题2做,任选一种窗函数,用分段、平均的思想改进周期图法,观察改进前后功率谱的差异;

2、给出一段文字总结周期图法的缺点,改进法的优点。

(二)上机题4:

心电R波检测和RR间隔估计

使用阈值法和Pan-Tompkins的检测方法验证信号使用数据:

ECG3.dat、ECG4.dat、ECG5.dat和ECG6.dat,采样率为200Hz(参考文件ECGS.m)。

计算每个数据的RR波间隔和心率的平均值。

比较两种方法结果的差异。

分别画出四个数据,并通过视觉直接观察法测量其参数来验证估计结果。

七、实验器材(设备、元器件):

matlab2014b

八、实验步骤:

构思,设计算法,写程序,写报告。

9、实验数据及结果分析:

(一)1.程序

clearall

close=load('

eegclose'

);

open=load('

eegopen'

close=close.eegclose(:

8*2);

open=open.eegopen(:

n=length(close);

fs=250;

x=(0:

n-1)'

/fs;

figure

(1)

subplot(2,2,1)

plot(x,close);

xlabel('

时间/s'

ylabel('

幅度/mV'

title('

闭眼信号'

subplot(2,2,2)

plot(x,open);

睁眼眼信号'

len=500;

%序列长度等于4500-len

d_num=100;

%分段数为len/d_num

%构造

win=cell(1,4);

rect=boxcar(n-len);

win{1,1}=rect;

trian=triang(n-len);

win{1,2}=trian;

hamm=hamming(n-len);

win{1,3}=hamm;

bman=blackman(n-len);

;

win{1,4}=bman;

close_w=cell(1,4);

open_w=cell(1,4);

fori=1:

length(win)

close_w{1,i}=zeros(n-len,1);

open_w{1,i}=zeros(n-len,1);

forj=1:

d_num:

len;

close_w{1,i}=10*log10(abs(fft(close(j:

n-len-1+j).*win{1,i})).^2/(n-len))+close_w{1,i};

open_w{1,i}=10*log10(abs(fft(open(j:

n-len-1+j).*win{1,i})).^2/(n-len))+open_w{1,i};

end

end

%功率谱平均

close_w{1,i}=close_w{1,i}/len;

open_w{1,i}=open_w{1,i}/len;

freq=(0:

(n-len)/2-1)/(n-len)*fs;

names={'

矩形窗'

'

三角窗'

海明窗'

凯撒窗'

};

%在功率谱中标注出δ(1-3Hz)、θ(4-7Hz)、α(8-13Hz)、β(14-30Hz)

locate_mid=[1.5,5.5,10.5,22,45];

%生成四种脑电波的定位矩阵

loc={[1,3][4,7][8,13][14,30]};

4

subplot(4,2,2*i-1)

plot(freq,close_w{1,i}(1:

(n-len)/2))

xlabel('

频率/Hz'

db'

title(['

闭眼加'

names{1,i},'

的功率谱'

]);

axis([0100min(close_w{1,i})max(close_w{1,i})])

set(gca,'

XTickmode'

manual'

Xtick'

locate_mid)

subplot(4,2,2*i)

plot(freq,open_w{1,i}(1:

ylabel('

睁眼加'

axis([0100min(close_w{1,i})max(open_w{1,i})])

2.结果:

1)每段500点:

图1.4000段平均

图2.400段平均

图3.40段平均

图4.4段平均

2)每段2500点:

图5.20段平均

(二)1.程序

ecg=cell(1,4);

peaks=cell(1,4);

becg=cell(1,4);

rs=zeros(1,4);

hb=zeros(1,4);

fori=3:

6

ecg{1,i-2}=load(['

ECG'

num2str(i),'

.dat'

peaks{1,i-2}=ECGfindpeaks(0.4,200,ecg{1,i-2});

subplot(2,2,i-2)

plot(peaks{1,i-2}(:

1),peaks{1,i-2}(:

2),'

o'

(1:

length(ecg{1,i-2}))/200,ecg{1,i-2})

mean(diff(peaks{1,i-2}(:

1)))

rs(i-2)=mean(diff(peaks{1,i-2}(:

hb(i-2)=60/(mean(diff(peaks{1,i-2}(:

1))))

num2str(i)]);

电压/uv'

[N,Wn]=buttord(40/200,60/200,1,32);

[b1,a1]=butter(N,Wn);

[N,Wn]=buttord(10/200,30/200,1,32);

[b2,a2]=butter(N,Wn,'

high'

figure

(2)

becg{1,i-2}=filtfilt(b1,a1,ecg{1,i-2});

becg{1,i-2}=filtfilt(b2,a2,becg{1,i-2});

becg{1,i-2}=abs(diff(becg{1,i-2}));

becg{1,i-2}=[zeros(30-1,1);

becg{1,i-2};

zeros(30-1,1)];

r=zeros(length(becg{1,i-2})-57,1);

(length(becg{1,i-2})-57)

r(j)=sum(becg{1,i-2}(j:

(j-1+30)));

becg{1,i-2}=r;

plot(r)

R=peaks1(becg{1,i-2},20,0.4)-20;

subplot(2,2,i-2)

plot(R/200,r(R),'

length(r))/200,r)

rs(i-2)=mean(diff(R))/200

hb(i-2)=60/(mean(diff(R))/200)

function[z_r]=ECGfindpeaks(t,fs,ecgdata)

sze=length(ecgdata);

n=fix(sze/(t*fs));

z=zeros(n-1,2);

z_l=1;

forj=1:

t*fs

fori=1:

n-1

[peks,loca]=findpeaks(ecgdata((fs*t)*(i-1)+j:

(fs*t)*i+j));

x=find(peks>

0.5*max(peks)+0.5*mean(peks));

loca=loca(x)+fs*t*(i-1)+1;

loca_l=length(loca);

%plot((loca+j)/fs,peks(x),'

time,necg);

%holdon;

z(z_l:

z_l+loca_l-1,1)=(loca+j)/fs;

z_l+loca_l-1,2)=peks(x);

z_l=z_l+loca_l;

ifj==1

rpeks=z;

c=1;

z_r=zeros(length(rpeks),2);

length(rpeks)

z_1=find(z(:

1)==rpeks(i,1));

iflength(z_1)>

=t*fs-1

z_2=find(z(:

2)==rpeks(i,2));

iflength(z_2)>

z_r(c,:

)=[rpeks(i,1)rpeks(i,2)];

c=c+1;

cc=1;

fori=2:

c

if(z_r(i,1)-z_r(cc,1))<

=t-0.1;

z_r(i,1)=0;

elsecc=i;

z_r=z_r(z_r(:

1)>

0,:

);

functionR=peaks1(ecg,m,th)

ecg_f=[zeros(1,m)'

ecg;

zeros(1,m)'

];

ecg_max=max(ecg_f);

ecg_min=min(ecg_f(ecg_f>

0));

th=ecg_min+(ecg_max-ecg_min)*th;

ind_ecg=find(ecg_f>

th);

R=[];

fori=1:

length(ind_ecg)

ifecg_f(ind_ecg(i))==max(ecg_f((ind_ecg(i)-m):

(ind_ecg(i)+m)))

R=[R,ind_ecg(i)];

if(length(R)>

1)

if((R(end)-R(end-1))<

70)

R(end)=[];

1)阈值法

RR间期(单位:

秒):

0.81590.63050.46111.0953

心率(单位:

次/分钟):

73.541295.1626130.124354.7798

2)Pan-Tompkins法检测心电R波尖峰

0.81080.63050.45051.0953

73.997995.1650133.195754.7798

10、总结及心得体会:

(一)由几次实验结果可以看出:

改进的周期图法结果的差异主要见于分段的长度,而非平均的段数。

并且段越长,dB图像越平滑,也就是说频率分辨率越差,但合适的图像平滑效果正是我们想要的结果。

(二)

改进阈值法的结果很有趣味,所以我多做了一些尝试来使得其检验效果更好,但是经过改良的阈值法,就不能适用于Pan-Tompkins法。

我不得不在Pan-Tompkins法里使用最开始的方法。

1.阈值法:

阈值法可以很好的检测规律的波形,但是当还有基线漂移的时候,其开始变得不稳定。

所以目标和方法就在于抵抗基线漂移。

(虽然滤除低频分量可以很好的改善基线漂移,但那并不在考虑范围)

1)因为R波波峰一般是最高的。

故假设,误检的发生其概率是小于检测到R波峰的。

如果数据长为100*n(n为一次心动周期的近似数据长度),设计一个大窗长度为99*n,牺牲掉n点长的数据(牺牲更多数据并没有好处),以小窗长度n进行分段计算,得到n份R波尖峰数据,设置阈值采信在这n分数据中出现th*n以上的数据。

这样可以避免在较缓慢基线漂移中,因为小窗位置不当而造成的个别失检和误检。

2)在阈值的设定中,将阈值设为a*(max(g(n)))+(1-a)(mean(g(n))),(g(n)为处理数据时小窗内的信号数据)。

将均值加入函数中使得基线的漂移得到体现。

3)但对于剧烈的基线漂移导致的伪迹比R波更像R波,改进检测算法无能为力。

只能用检测时间间隔的方法剔除掉,从第一个R波峰值开始,如果下一个值与其距离在0.4s以内,则去除该点。

若不是,则将该点作为开始点重复上面的操作。

但这样至少要保证第一个点是R波峰值,这很难做到。

但是基于第一条的假设下,我们可以选择一个在99条数据中出现次数最多的R波峰值作为是第一个点。

但是由于数据太短,没能验证想法。

理论上来说这种方法是具有积极意义的。

2.Pan-Tompkins法

滤波加积分的方式使得峰值的位置发生了稍稍的偏移,这是使其结果和阈值法出现区别的原因。

值得一提的是,由于Pan-Tompkins法滤波器的选择对波形影响很大,会在上升和下降的边沿出现毛刺。

加之波形密集能量集中,使得为阈值法写的函数出现很大误差。

.

十一、对本实验过程及方法、手段的改进建议:

报告评分:

指导教师签字:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2