test.m
上传用户:nxf103
上传日期:2017-12-04
资源大小:2690k
文件大小:2k
开发平台:

Matlab

  1. load x00;
  2. load t05;
  3. x00=[x00(1,:); x00(80,:);x00(120,:)];
  4. [tr,meanp,stdp] = prestd(x00');
  5. te = trastd(t05',meanp,stdp);
  6. tr=tr';
  7. te=te';
  8. trd=data(tr);
  9. ted=data(te);
  10. %[r,a]=train(kpca,tr);
  11. [r,a]=train(kpca({kernel('rbf',50)}),trd);
  12. d=test(a,ted);
  13. val=a.e_val;
  14. vec=a.e_vec;
  15. dvec=d.X;
  16. s=inv(diag(val(1:2)));
  17. for i=1:960
  18.   tsquare(i)=dvec(i,1:2)*s*dvec(i,1:2)';
  19.   SPE(i)=dvec(i,:)*dvec(i,:)'-dvec(i,1:2)*dvec(i,1:2)';
  20. end
  21. figure(1);
  22. subplot(2,1,1);
  23. plot(tsquare);
  24. xlabel('Sample Number');
  25. ylabel('T2');
  26. subplot(2,1,2);
  27. plot(tsquare);
  28. plot(SPE);
  29. xlabel('Sample Number');
  30. ylabel('SPE');
  31. cn=kpcak(te,tr,vec(:,1:2),s);
  32. figure(2)
  33. plot(cn);
  34. %for i=1:960
  35.  %  spe(i)=dvec(21)^2;
  36.   % for j=22:499
  37.    %     spe(i)=spe(i)+dvec(i,j)^2;
  38.    % end
  39.    %end
  40. %cn=kpcak(te,tr,vec(:,1:2),s);
  41. %stcn=standard_cn(cn);
  42. %K=kernel_matrix(tr,'RBF_kernel',2);
  43. %unit = ones(500,500)/500;
  44. %K_n = K - unit*K - K*unit + unit*K*unit;
  45. %[evecs,evals] = eig(K_n);
  46. %evals = real(diag(evals))/500;
  47. %排序
  48. %[evals,ordered]=sort(-evals);    
  49. %evals=-evals;
  50. %evecs=evecs(:,ordered); 
  51. %只保留相关的元素
  52. %peff = find(evals>1000*eps);
  53. %neff = length(peff);
  54. %for i=1:neff,
  55.  % evecs(:,i) = evecs(:,i)./sqrt(evecs(:,i)'*evals(i)*evecs(:,i));
  56.  %end
  57. %test_features_1 = K_n * evecs(:,1:neff);
  58. %s=inv(diag(evals(1:neff)));
  59. %for i=1:500
  60.  % tsquare_1(i)=test_features_1(i,:)*s*test_features_1(i,:)';
  61.  %end
  62. %unit_test = ones(960,500)/500;
  63. %K_test=kernel_matrix(tr,'RBF_kernel',2,te);
  64. %K_test=K_test';
  65. %K_test_n = K_test - unit_test*K - K_test*unit + unit_test*K*unit;
  66. %test_features = zeros(960,500);
  67. %test_features = K_test_n * evecs(:,1:neff);
  68. %s=inv(diag(evals(1:neff)));
  69. %for i=1:960
  70.  % tsquare(i)=test_features(i,:)*s*test_features(i,:)';
  71.  %end