%重新分配训练和预测的样本
clc
close all
clear
num=[100,101,214,118,103,109,212,232];
len=length(num);
path='E:\dataandpro\Arrhythmia\';
featuretrain=[];
featurepre=[];
typetrain=[];
typepre=[];
wavename='db2';
feature=[];
featuretotal=[];
typetotal=[];
for i=1:len
number=num(i);
path1=strcat(path,num2str(number));
path2=strcat(path1,'\r_r_interval.mat');
load(path2);
% r_r_interval=[];
% for i=1:length(Rindnew)-1
% r_r_interval(i)=(Rindnew(i+1)-Rindnew(i))/360;
% end
path3=strcat(path1,'\s_t_interval.mat');
load(path3);
path4=strcat(path1,'\q_t_interval.mat');
load(path4);
path5=strcat(path1,'\type.mat');
load(path5);
path6=strcat(path1,'\XC.mat');
load(path6);
path7=strcat(path1,'\pstart_ind.mat');
load(path7);
% path8=strcat(path1,'\Rindnew.mat');
% load(path8);
a=[];
for j=2:length(pstart_ind)-1
[c,l]=wavedec(XC(pstart_ind(j):pstart_ind(j+1)),3,wavename);
a3=appcoef(c,l,wavename,3);
mina=min(a3);
maxa=max(a3);
meana=mean(a3);
stda=std(a3);
a=[a;mina,maxa,meana,stda];
end
avgR=mean(r_r_interval);
pavg=[];
pavg=r_r_interval./avgR;%每个RR间期除以平均值,可以用来提取Pre/svgR,post/avrg
s_t_interval=s_t_interval(2:length(s_t_interval));
q_t_interval=q_t_interval(2:length(q_t_interval));
len1=min(length(pavg),length(s_t_interval));
len2=min(length(type),length(q_t_interval));
len3=min(len1,len2);
[len4,wide]=size(a);
len=min(len3,len4);
%feature=[];
pavg=pavg';
s_t_interval=s_t_interval';
q_t_interval=q_t_interval';
feature=[pavg(1:len-1),pavg(2:len)];%,s_t_interval(1:len-1),q_t_interval(1:len-1)];
[len1,wide1]=size(feature);
[len2,wide2]=size(type);
len=min(len1,len2);
feature=[feature(1:len-1,:),a(1:len-1,:),a(2:len,:)];
type=type(1:len1-1);
featuretotal=[featuretotal;feature];
typetotal=[typetotal;type];
end
id=[1 2 3 5 8 13 ];
position1=[];
position2=[];
position3=[];
position5=[];
position8=[];
%position13=[];
%position_1=[];
len=length(typetotal);
for i=1:len
if typetotal(i)==1
position1=[position1;i];
elseif typetotal(i)==2
position2=[position2;i];
elseif typetotal(i)==3
position3=[position3;i];
elseif typetotal(i)==5
position5=[position5;i];
else typetotal(i)==8
position8=[position8;i];
end
end
len1=length(position1);
len2=length(position2);
len3=length(position3);
len5=length(position5);
len8=length(position8);
featuretrain=[featuretrain;featuretotal(position1(1:round(2/3*len1)),:)];
featuretrain=[featuretrain;featuretotal(position2(1:round(2/3*len2)),:)];
featuretrain=[featuretrain;featuretotal(position3(1:round(2/3*len3)),:)];
featuretrain=[featuretrain;featuretotal(position5(1:round(2/3*len5)),:)];
featuretrain=[featuretrain;featuretotal(position8(1:round(2/3*len8)),:)];
typetrain=[typetrain;typetotal(position1(1:round(2/3*len1)))];
typetrain=[typetrain;typetotal(position2(1:round(2/3*len2)))];
typetrain=[typetrain;typetotal(position3(1:round(2/3*len3)))];
typetrain=[typetrain;typetotal(position5(1:round(2/3*len5)))];
typetrain=[typetrain;typetotal(position8(1:round(2/3*len8)))];
featurepre=[featurepre;featuretotal(position1(round(2/3*len1)+1:len1),:)];
featurepre=[featurepre;featuretotal(position2(round(2/3*len2)+1:len2),:)];
featurepre=[featurepre;featuretotal(position3(round(2/3*len3)+1:len3),:)];
featurepre=[featurepre;featuretotal(position5(round(2/3*len5)+1:len5),:)];
featurepre=[featurepre;featuretotal(position8(round(2/3*len8)+1:len8),:)];
typepre=[typepre;typetotal(position1(round(2/3*len1)+1:len1))];
typepre=[typepre;typetotal(position2(round(2/3*len2)+1:len2))];
typepre=[typepre;typetotal(position3(round(2/3*len3)+1:len3))];
typepre=[typepre;typetotal(position5(round(2/3*len5)+1:len5))];
typepre=[typepre;typetotal(position8(round(2/3*len8)+1:len8))];
[bestacc,bestc,bestg]=SVMcgForClass(typetrain,featuretrain,-5,5);
% bestc=13.9288;寻得的最优参数
% bestg=0.0625';
% bestacc=96.6823
model=svmtrain(typetrain,featuretrain,'-s 0 -t 2 -c 13.9288 -g 0.0625');
[label,accrury,dec]=svmpredict(typepre,featurepre,model);
CR = ClassResult(typepre,featurepre,model,2);