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

    function y=ration(x)
[r,c]=size(x);
for k=1:c-1
  for j=k+1:c
      aa=0;bb=0;cc=0;dd=0;
     for i=1:r
       uu=x(i,k)^2-x(i,j)^2;
       vv=x(i,k)*x(i,j)*2;
       aa=aa+uu;bb=bb+vv;cc=cc+uu^2-vv^2;dd=dd+uu*vv*2;
     end
dd=r*dd-2*aa*bb;
cc=r*cc-aa^2+bb^2;
   if abs(cc)<=1e-10
     b=pi/2;
   else
     b=abs(atan(dd/cc));
   end
   if cc<0 
      b=pi-b;
        if dd>0;
            b=0.25*b;
          else
            b=-b*0.25;
        end
   elseif dd>0
           b=0.25*b;
        else
          b=-0.25*b;
   end
 si=sin(b);c0=cos(b);
    for i=1:r
        qq=x(i,k)*c0+x(i,j)*si;
        x(i,j)=-x(i,k)*si+c0*x(i,j);
        x(i,k)=qq;
    end
   end
end
y=x;