-
大小: 12KB文件類(lèi)型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-02
- 語(yǔ)言: Matlab
- 標(biāo)簽: BP網(wǎng)絡(luò)??特征提取??
資源簡(jiǎn)介
本壓縮包包含基于MATLAB的心電信號(hào)BP網(wǎng)絡(luò)識(shí)別程序,可以在C盤(pán)上順利運(yùn)行,通過(guò)提取特征值實(shí)現(xiàn)分類(lèi)識(shí)別。

代碼片段和文件信息
function?[?QxQyRxxrySxSyPxPyTxTy]?=?DINGWEI(?datafs?)
%UNtitleD?此處顯示有關(guān)此函數(shù)的摘要
%???此處顯示詳細(xì)說(shuō)明
%=============峰值點(diǎn)前搜索找出R點(diǎn)====================
%=============差分====================
y=data;
n=length(y);
for?i=1:(n-2)
f1(i)=(y(i+1)-y(i));%一階向前差分
ff1(i)=f1(i)*f1(i);
end;
for?i=1:(n-2)
f2(i)=(y(i+2)-2*y(i+1)+y(i));%二階向前差分
ff2(i)=f2(i)*f2(i);
end;
f=ff1+ff2;%一階二階差分平方和
n1=0:length(f)-1;t1=n1/fs;
%=============閾值====================
ffd=f;
for?i=1:10
????x=max(ffd);
????fmax(i)=x;%找差分平方和中10個(gè)最大值點(diǎn)
????zuo=find(ffd==max(ffd));%每個(gè)最大值點(diǎn)對(duì)應(yīng)的橫坐標(biāo)
????ffd(zuo)=0;%令最大值點(diǎn)為0,方便找下一個(gè)最大值點(diǎn)
end
fmax;
fsum=sum(fmax);
fse=fsum/10;%10個(gè)最大值的平均值為fse
th=0.35*fse;%自適應(yīng)閾值
%?%=============峰值點(diǎn)前搜索找出R點(diǎn)====================
k=0;
for?i=1:length(ffd)
????if?ffd(i)>th??%閾值太小,就會(huì)有很多點(diǎn),如何找出其中峰值最大的點(diǎn)
????????k=k+1;Ry(k)=ffd(i);Rx(k)=i;%將R值點(diǎn)的眾坐標(biāo)放于Ry中橫坐標(biāo)放于Rx中
????end
end
w=1;s=0;a(w)=Rx(1);
for?i=1:length(Rx)-1
????if?Rx(i+1)-Rx(i)>100
????????w=w+1;a(w)=Rx(i+1);s=s+1;b(s)=Rx(i);
????end
b(s+1)=Rx(length(Rx));
end
c=b;
for?i=1:length(a)
???if?(?b(i)-a(i)~=max(b-a));
???????c(i)=b(i)+(max(b-a)-(b(i)-a(i)));
???end
end
for?i=1:length(a)
????ddq(i:)=(y(a(i):c(i)));%a(i)與b(i)間距必須相同,否則不匹配
????ry(i)=max(y(a(i):c(i)));%
????xm=find(ddq(i:)==max(ddq(i:)));
????rx(i)=a(i)+xm(1);
end
for?i=1:length(rx)
????Rxx(i)=rx(i)-1;
end
for?i=1:(length(rx))???
????plot((Rxx(i))/fsry(i)‘or‘);%標(biāo)記定位R點(diǎn)
end
%=============峰值點(diǎn)前搜索找出Q點(diǎn)====================
for?i=1:length(Rxx)
????dq(i:)=(y((Rxx(i)-50):Rxx(i)));
????Qy(i)=min(y((Rxx(i)-50):Rxx(i)));%左邊50個(gè)點(diǎn)搜索最小值
????xm=find(dq(i:)==min(dq(i:)));
?????Qx(i)=Rxx(i)-51+xm(1);
end?
for?i=1:(length(Qx))???
?????plot(Qx(i)/fsQy(i)‘*k‘);%標(biāo)記定位Q點(diǎn)
end
%=============峰值點(diǎn)前搜索找出S點(diǎn)====================
for?i=1:length(Rxx)
????dqs(i:)=(y((Rxx(i)):(Rxx(i)+50)));
????Sy(i)=min(y((Rxx(i)):(Rxx(i)+50)));%左邊50個(gè)點(diǎn)搜索最小值
????xmS=find(dqs(i:)==min(dqs(i:)));
?????Sx(i)=Rxx(i)+xmS(1);
end?
for?i=1:(length(Sx))???
?????plot(Sx(i)/fsSy(i)‘*r‘);%標(biāo)記定位Q點(diǎn)
end
%=============定位P點(diǎn)====================
for?i=1:length(Rxx)
????dqp(i:)=(y((Qx(i)-ceil(0.16*fs)):Qx(i)));
????Py(i)=max(y((Qx(i)-ceil(0.16*fs)):Qx(i)));%兩種信號(hào)采樣頻率不同,搜索范圍不一樣????
????xm=find(dqp(i:)==max(dqp(i:)));
?????Px(i)=Qx(i)-0.16*fs+xm(1);
end?
for?i=1:(length(Px))???
?????plot(Px(i)/fsPy(i)‘om‘);%標(biāo)記定位p點(diǎn)
end
%=============定位T點(diǎn)====================
for?i=1:length(Sx)
????dqt(i:)=(y((Sx(i)):(Sx(i)+ceil(0.3*fs))));
????Ty(i)=max(y((Sx(i)):(Sx(i)+ceil(0.3*fs))));%左邊250個(gè)點(diǎn)搜索最小值
????xmT=find(dqt(i:)==max(dqt(i:)));
?????Tx(i)=Sx(i)+xmT(1);
end?
for?i=1:(length(Tx))???
?????plot(Tx(i)/fsTy(i)‘og‘);%標(biāo)記定位t點(diǎn)
end
end
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件???????2939??2017-11-15?09:20??程序\DINGWEI.m
?????文件???????2331??2017-11-24?21:36??程序\importmit.m
?????文件???????1517??2017-11-25?09:23??程序\inputtest.txt
?????文件???????2308??2017-11-25?09:23??程序\inputtrain.txt
?????文件???????1164??2017-11-25?09:58??程序\main.m
?????文件???????6823??2017-11-24?21:32??程序\rddata.m
?????文件????????622??2017-11-10?20:02??程序\sigDEN.m
?????文件??????17445??2017-11-24?21:54??程序\tezhengtiqu.m
?????文件????????877??2017-11-13?09:57??程序\ztezhengtiquhanshu.m
?????目錄??????????0??2017-11-25?10:44??程序
-----------?---------??----------?-----??----
????????????????36026????????????????????10
評(píng)論
共有 條評(píng)論