主成分分析MATLAB代码(以及检验)

x= [0.7883 0.7391 0.8111 0.6587 0.6543 0.8259 0.8486 0.6834 0.8495 0.7846
0.7633 0.7287 0.7629 0.8552 0.7564 0.7455 0.7800 0.9490 0.8918 0.8954
0.4745 0.5126 0.8810 0.8903 0.8288 0.7850 0.8032 0.8862 0.3987 0.3970
0.8246 0.7603 0.6888 0.8977 0.7926 0.7856 0.6509 0.8902 0.6799 0.9877
0.8791 0.8736 0.8183 0.9446 0.9202 0.9263 0.9185 0.9505 0.8620 0.8873
0.9538 0.9257 0.9285 0.9434 0.9154 0.8871 0.9357 0.8760 0.9579 0.9741
0.8785 0.8542 0.8537 0.9027 0.8729 0.8485 0.8473 0.9044 0.8866 0.9035
0.6305 0.6187 0.6313 0.7415 0.6398 0.6142 0.5734 0.8980 0.6186 0.7382
0.8928 0.7831 0.5608 0.8419 0.8464 0.7616 0.8234 0.6384 0.9604 0.8514];
x=x';
stdr=std(x);%求各变量标准差
[n,m]=size(x);
sddata=x./stdr(ones(n,1),:);%标准化变换
[p,princ,egenvlue]=princomp(sddata)%调用主成分分析程序
p3=p(:,1:m)%输出主成分系数
sc=princ(:,1:m)%输出主成分得分
egenvlue %输出特征根
per=100*egenvlue/sum(egenvlue)%输出各个主成分贡献率达到85%以上即可
for i=1:length(per)
zh(i)=sum(per(1:i));
end
disp('累计贡献率=');
disp(zh')

相关文档
最新文档