[v,latent,explained,xlean_normal_project]=lpca(xlean_normal,xlean_normal,numpc); [v,latent,explained,xtest_normal_project]=lpca(xlean_normal,xtest_normal,numpc); [xlean_normal_project_unit]=unitary(xlean_normal_project); %unitify project [xtest_normal_project_unit]=unitary(xtest_normal_project); %unitify project svm_xlean = xlean_normal_project_unit; svm_xtest = xtest_normal_project_unit;
elseif iflag==3 %用核主成分分析方法进行特征提取 numpc=361; d=2;
[evals,explained,xlean_normal_project]=kpca(xlean_normal,xlean_normal,numpc,d); [evals,explained,xtest_normal_project]=kpca(xlean_normal,xtest_normal,numpc,d); [xlean_normal_project_unit]=unitary(xlean_normal_project); %unitify project [xtest_normal_project_unit]=unitary(xtest_normal_project); %unitify project svm_xlean = xlean_normal_project_unit; svm_xtest = xtest_normal_project_unit; end
%========================== 分类 ============================= ker='linear'; %支持向量机所采用的核的类型 upperbound=Inf; %支持向量机的正则化因子
p1=sqrt(sumsqr(svm_xlean(1,:)-mean(svm_xlean(1,:)))./idlean); %支持向量机的第一个核参数 %p1=0.1;
p2=0; %支持向量机的第二个核参数 % 开始用支持向量机进行分类
[alf,b,nsv]=smoc(svm_xlean,ylean,upperbound,ker,p1,p2); %训练支持向量机 %[alf,b,nsv]=svmc(svm_xlean,ylean,upperbound,ker,p1,p2); fprintf('\\nLagrange coefficient ALF:\\n'); %fprintf('%f\\n',alf);
[ytest] = svmctest(svm_xlean,ylean,svm_xtest,ker,alf,b,p1,p2); %基于训练结果对测试样本进行分类 detc_rate=length(find((ytest_real-ytest)==0))/ntest*100;
fprintf('\\nDetection rate:%f\\n',detc_rate); %输出识别率
31