matlab实现主成分分析代码

%3.1_cwstd.m,用总和标准化法标准化矩阵
 
function std=cwstd(vector) 
cwsum=sum(vector,1);           %对列求和 
[a,b]=size(vector);              %矩阵大小,a 为行数,b 为列数 
for i=1:a 
     for j=1:b 
         std(i,j)= vector(i,j)/cwsum(j); 
     end 
end 



% 3.2_cwfac.m 计算相关系数矩阵 

function result=cwfac(vector); 
fprintf('相关系数矩阵:\n') 
std=CORRCOEF(vector)        %计算相关系数矩阵 
fprintf('特征向量(vec)及特征值(val):\n') 
[vec,val]=eig(std)   %求特征值(val)及特征向量(vec) 
newval=diag(val) ; 
[y,i]=sort(newval) ;     %对特征根进行排序,y 为排序结果,i 为索引 
fprintf('特征根排序:\n') 
for z=1:length(y) 
     newy(z)=y(length(y)+1-z); 
end 
fprintf('%g\n',newy) 
rate=y/sum(y); 
fprintf('\n 贡献率:\n') 
newrate=newy/sum(newy) 
sumrate=0; 
newi=[]; 
for k=length(y):-1:1 
     sumrate=sumrate+rate(k); 
     newi(length(y)+1-k)=k; 
     if sumrate>0.85 break; 
     end                 %记下累积贡献率大85%的特征值的序号放入newi中
end                      
fprintf('主成分数:%g\n\n',length(newi)); 
fprintf('主成分载荷:\n') 
for p=1:length(newi) 
     for q=

你可能感兴趣的:(个人日记,代码,数学建模)