gusucode.com > 《模式识别与智能计算》matlab源代码 > 《模式识别与智能计算》matlab源代码/《模式识别与智能计算》部分函数的源程序/书程序/第14章/RQ_factor.m

    function [d,e]=RQ_factor(x)
[r,c]=size(x); 
x2=sum(x,1);   
x1=sum(x,2);   
T=sum(sum(x2));
for i=1:r
  for j=1:c
    z(i,j)=(x(i,j)-x2(j)*x1(i)/T)/sqrt(x2(j)*x1(i));
  end
end
R1=z'*z;
[e_vector,e_value]=eig(R1);
e_value = diag(e_value);
[a, index] = sort(-e_value);
e_value = e_value(index);
e_vector = e_vector(:,index);
for i=1:c   
  d(:,i)=e_vector(:,i)*sqrt(e_value(i));
end
sum_latent=sum(e_value);
temp=0;con=0;m=0;
for i=1:c
    if con<0.8
        temp=temp+e_value(i);
        con=temp/sum_latent;
        m=m+1;
    else
        break;
    end
end
d(:,m+1:c)=[];
e_vector(:,m+1:c)=[];
e_value=e_value(1:m);

e=z*e_vector;
for j=1:length(e_value)  
   b=0;
   for i=1:r
    b=b+e(i,j)^2;
   end
   for i=1:r    
      e(i,j)=e(i,j)*sqrt(e_value(j))/sqrt(b);
   end
end