gusucode.com > 《模式识别与智能计算》matlab源代码 > 《模式识别与智能计算》matlab源代码/《模式识别与智能计算》部分函数的源程序/书程序/第14章/Q_factor.m
function d=Q_factor(x) R=simili(x); [r,c]=size(x); [e_vector, e_value]=eig(R); 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_value=e_value(1:m); for i=1:length(e_vector) sigma1(i)=sum(d(i,:).^2); end for i=1:length(e_value) sigma2(i)=sum(d(:,i).^2); end for i=1:c for j=1:length(e_value) d(i,j)=d(i,j)/sqrt(sigma1(i)); end end v2=1e+20; for k=1:20 c1=0;b=0; for j=1:length(e_value) c2=0; for i=1:c b=b+d(i,j)^4; c2=c2+d(i,j)^2; end c1=c1+c2*c2; end v1=b/c-c1/c^2; if abs(v1-v2)<=1e-5 break else d=ration(d); v2=v1; end end