工程软件大作业Matlab在信号处理中的应用Word文档下载推荐.docx

上传人:b****5 文档编号:19809317 上传时间:2023-01-10 格式:DOCX 页数:16 大小:44.62KB
下载 相关 举报
工程软件大作业Matlab在信号处理中的应用Word文档下载推荐.docx_第1页
第1页 / 共16页
工程软件大作业Matlab在信号处理中的应用Word文档下载推荐.docx_第2页
第2页 / 共16页
工程软件大作业Matlab在信号处理中的应用Word文档下载推荐.docx_第3页
第3页 / 共16页
工程软件大作业Matlab在信号处理中的应用Word文档下载推荐.docx_第4页
第4页 / 共16页
工程软件大作业Matlab在信号处理中的应用Word文档下载推荐.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

工程软件大作业Matlab在信号处理中的应用Word文档下载推荐.docx

《工程软件大作业Matlab在信号处理中的应用Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《工程软件大作业Matlab在信号处理中的应用Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。

工程软件大作业Matlab在信号处理中的应用Word文档下载推荐.docx

%绘制坐标XX

XX=zeros(DATAQUANTITY,1);

XX=1:

DATAQUANTITY;

XX=XX'

XX=XX/512;

%显示范围

DISPLAYMIN=3001;

DISPLAYMAX=6500;

FULLPATH=fullfile(PATH,DATAFILE);

msg=fopen(FULLPATH,'

r'

);

ecg_char=zeros(DATAQUANTITY,4);

ecg_data=zeros(DATAQUANTITY,1);

%读入文件

i=1;

whilei<

=DATAQUANTITY;

char(1,:

)=fread(msg,10,'

uint8=>

char'

%%文件读取

ifchar(1,1)=='

:

'

&

&

char(1,2)=='

'

char(1,3)=='

8'

char(1,4)=='

0'

ecg_char(i,:

)=[char(1,6)char(1,7)char(1,9)char(1,10)];

temp1=hex2dec(ecg_char(i,:

));

%%十六进制字符串转换为十进制数

temp2=dec2bin(temp1,16);

%%十进制数转为二进制字符串

iftemp2(1,1)=='

%%补码首位为-1

ecg_data(i,1)=bin2dec(temp2);

else%%补码首位为1

forj=1:

16

iftemp2(1,j)=='

1'

temp2(1,j)='

else

end

ecg_data(i,1)=-(bin2dec(temp2)+1);

i=i+1;

fseek(msg,-9,'

cof'

%%文件指针移动

end

fclose(msg);

%%%%%%%%----------FFT----------%%%%%%%%%

%%%%%%%%------巴特沃斯低通------%%%%%%%%%

%%%%%%%%--------滤波后FFT-------%%%%%%%%%

Fs=512;

%采样频率512HZ采样频率

len=512;

%fft点数

%IIR滤波器设计

Nf=0;

%阶数

Wn=0;

%3dB截止频率

Fp=36.5;

%通带截止频率37Hz

Fc=50;

%阻带截止频率500Hz

Rp=3;

%通带波纹最大衰减为1dB

Rs=60;

%阻带衰减为60dB

F0=18;

BW=33;

%----------低通滤波器----------%巴特沃兹

figure

(1);

%画图

subplot(2,1,1);

plot(XX(1:

DISPLAYMAX-DISPLAYMIN+1,1),ecg_data(DISPLAYMIN:

DISPLAYMAX,1),'

blue'

grid;

legend('

巴特沃斯低通滤波前'

axis([0XX(DISPLAYMAX-DISPLAYMIN+500,1)-500018000]);

xlabel('

时间/秒'

ylabel('

幅值'

[Nf,Wn]=buttord(Fp*2/Fs,Fc*2/Fs,Rp,Rs);

[BbBa]=butter(Nf,Wn,'

low'

%调用MATLABbutter函数快速设计滤波器

Hf=freqz(Bb,Ba,len/2);

%绘制频率响应曲线

Bf=filter(Bb,Ba,ecg_data);

%进行低通滤波

%By=fft(Bf,len);

%对信号f1做len点FFT变换

subplot(2,1,2);

DISPLAYMAX-DISPLAYMIN+1,1),Bf(DISPLAYMIN:

巴特沃斯低通滤波后'

%---------均值滤波器----------%

N=15;

fori=1+(N-1)/2:

DATAQUANTITY-(N-1)/2;

Bf(i,1)=mean(Bf(i-(N-1)/2:

i+(N-1)/2,1));

%%%%%%------去基线漂移------%%%%%%%%%窗口中值滤波

%-------取一个周期心电信号N=201-------%%

figure

(2);

快速中值滤波前'

axis([0XX(DISPLAYMAX-DISPLAYMIN+500,1)-200010000]);

N=201;

egc_data_tmp=zeros(DATAQUANTITY,1);

temp=Bf(i-(N-1)/2:

i+(N-1)/2,1);

temp=sort(temp);

egc_data_tmp(i,1)=temp((N-1)/2+1,1);

Bf(i,1)=Bf(i,1)-egc_data_tmp(i,1);

快速中值滤波后'

axis([0XX(DISPLAYMAX-DISPLAYMIN+500,1)-20005000]);

%%%%%%%------QRS波群定位------%%%%%%%%%

%%%%-------自适应差分阈值法-------%%%%%%

M=Bf;

forn=1+(N-1)/2+4:

DATAQUANTITY-(N-1)/2-4;

Y(n,1)=n;

delta(1,1)=M(n+1,1)-M(n-1,1);

delta(1,2)=M(n+2,1)-M(n-2,1);

delta(1,3)=M(n+3,1)-M(n-3,1);

delta(1,4)=M(n+4,1)-M(n-4,1);

Y(n,2)=mean(delta);

end

deltamax=zeros(1,5);

%峰值矩阵赋初值

ifn<

=1000+(N-1)/2+4;

ifY(n,2)>

deltamax(1,1);

deltamax(1,1)=Y(n,2);

elseifn<

=2000+(N-1)/2+4;

deltamax(1,2);

deltamax(1,2)=Y(n,2);

=3000+(N-1)/2+4;

deltamax(1,3);

deltamax(1,3)=Y(n,2);

=4000+(N-1)/2+4;

deltamax(1,4);

deltamax(1,4)=Y(n,2);

=5000+(N-1)/2+4;

deltamax(1,5);

deltamax(1,5)=Y(n,2);

deltamax=sort(deltamax);

%排序去除首位

deltam0=mean(deltamax(1,2:

4));

%计算差分最大值平均值

jelta(1,1)=0.35*deltam0;

%阈值计算

jelta(1,2)=0.35*deltam0+100;

jelta(1,3)=0.4*deltam0;

jelta_repair=zeros(1,3);

tmp=zeros(1,3);

get_count=0;

locR=zeros(DATAQUANTITY,1);

forn=1+(N-1)/2+45:

DATAQUANTITY-(N-1)/2-45;

jelta(1,1)+jelta_repair(1,1);

%特征点1

ifY(n+1,2)>

jelta(1,2)+jelta_repair(1,2);

%特征点2

fornt=n+1:

n+1+45;

%特征点3

ifY(nt,2)<

-jelta(1,3)-jelta_repair(1,3);

%QRS波群定位

n=nt;

forntc=nt-25:

nt+25;

%R波精确定位

ifM(ntc,1)>

M(n,1);

n=ntc;

locR(n,1)=1;

%标记为R波波峰

jelta_repair(1,1)=0.1*M(n,1);

%自适应参数计算

jelta_repair(1,2)=0.1*M(n,1);

jelta_repair(1,3)=0.1*M(n,1);

R_l=M(n,1);

forntc=1:

80;

ifM(n-ntc,1)<

=R_l;

R_l=M(n-ntc,1);

locR(n-ntc+1,1)=2;

%R波左

break;

end;

R_r=M(n,1);

ifM(n+ntc,1)<

=R_r;

R_r=M(n+ntc,1);

locR(n+ntc-1,1)=3;

n=n+ntc;

get_count=get_count+1;

figure(10);

DISPLAYMAX-DISPLAYMIN+1,1),M(DISPLAYMIN:

b'

%只画出第一条线

受试者1特征提取'

holdon;

forn=DISPLAYMIN:

DISPLAYMAX;

iflocR(n,1)==2;

plot(XX(n-DISPLAYMIN,1),M(n,1),'

rs'

elseiflocR(n,1)==1;

elseiflocR(n,1)==3;

gridon;

时间'

dataLog-2015-3-15-12-45-29.txt'

DATAQUANTITY=10000;

DISPLAYMIN=4001;

DISPLAYMAX=7500;

%-------取一个周期心电信号N=501-------%%

受试者2特征提取'

相关作业截图

图1巴特沃兹低通滤波效果图图2快速中值滤波效果图

(Fig.1TheButterworthlowpassfilteringeffect)(Fig.2Thefastmedianfilteringeffect)

图3两名受试者心电数据特征提取

(Fig.3Thefeatureextractionfromtwosubjects)

作业小结

作业中遇到了较多问题,例如对数字滤波器的构造不是很熟悉,对QRS波群定位算法的实现流程不是很熟悉。

解决方式主要还是查阅相关资料,如课本及期刊等。

这学期开的这门课,总的来说收获还是很大的。

不但教会了我们怎么使用Matlab这个工具,还教会了我们怎么学习。

参考文献

[1]苏丽,赵国良,李东明等.心电信号QRS波群检测算法研究[J].哈尔滨工程大学学报,2005,26(4):

513-517.

[2]杨凯,丛林,胡文东等.基于BMD101的嵌入式无线心电监测系统[J].电子技术应用,2014,40

(1):

122-124.

[3]耶晓东.基于Matlab的IIR数字滤波器设计及DSP实现[J].电子设计工程,2011,19(9):

175-177.

[4]余华,黄程韦,赵力等.儿童情绪监测与情感电生理参数采集系统的研究[J].电子器件,2010,33(4):

516-520.

[5]李豪,刘杰.人体皮肤电阻与呼吸、情绪关系的测量及分析[J].科学技术与工程,2012,03:

662-665.

[6]张淑杰,张维维,奚云琪等.基于傅里叶变换的心电信号频谱分析[J].信息系统工

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1