工程软件大作业Matlab在信号处理中的应用Word文档下载推荐.docx
《工程软件大作业Matlab在信号处理中的应用Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《工程软件大作业Matlab在信号处理中的应用Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
%绘制坐标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].信息系统工