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

    function [f s l g]=radar(x,k)

figure 
   circle(0,0,2);
   set(gca,'ytick',[-2 -1.5 -1 -0.5 0 0.5 1 1.5 2]),set(gca,'yticklabel','-2|1.5|-1|-0.5|0|0.5|1|1.5|2|');
   set(gca,'xtick',[-2 -1.5 -1 -0.5 0 0.5 1 1.5 2]);set(gca,'xticklabel','-2|1.5|-1|-0.5|0|0.5|1|1.5|2|');
   hold on
   xx=[0 2];yy=[0 0];line(xx,yy);
switch k
 case 1
   [r,c]=size(x);a=ones(r,c);b=ones(r,c);
   x1=guiyi(x);
   y1=2*atan(x1)/pi+1;       
    for i=1:c
      a1=2*cos(i*2*pi/c);b1=2*sin(i*2*pi/c);  
      x2=[0 a1];y2=[0 b1];line(x2,y2);
      text(a1+0.1,b1,num2str(i))
    end
    for i=1:r
      for j=1:c
        a(i,j)=y1(i,j)*cos(j*2*pi/c);b(i,j)=y1(i,j)*sin(j*2*pi/c);
      end
    end
   for i=1:r
      for j=1:c-1
        x2=[a(i,j) a(i,j+1)];y2=[b(i,j),b(i,j+1)];
        line(x2,y2);
      end
     x2=[a(i,1) a(i,c)];y2=[b(i,1),b(i,c)]; f=line(x2,y2);
   end
    for i=1:r
        for j=1:c-1
            s(i,j)=y1(i,j)*y1(i,j+1)*sin(2*pi/c)/2; 
            l(i,j)=sqrt((a(i,j)-a(i,j+1))^2+(b(i,j)-b(i,j+1))^2);   
        end  
    end
    s=sum(s');l=sum(l');g=[sum(a')/c;sum(b')/c];    
case 2
   [r,c]=size(x);a=ones(r-1,c);b=ones(r-1,c);
   x1=guiyi(x(1:r-1,1:c));
   y1=2*atan(x1)/pi+1;       
   ab=sum(x(r,:));a3=0;  
   for i=1:c
      a3=a3+x(r,i)*2*pi/ab;
      theta(i)=a3;
   end
      for i=1:c
        a1=2*cos(theta(i));b1=2*sin(theta(i));
        x2=[0 a1];y2=[0 b1];line(x2,y2);
        text(a1+0.1,b1,num2str(i));
     end
for i=1:r-1
    for j=1:c
        a(i,j)=y1(i,j)*cos(theta(j));b(i,j)=y1(i,j)*sin(theta(j));
    end
end
for i=1:r-1
    for j=1:c-1
        x2=[a(i,j) a(i,j+1)];y2=[b(i,j),b(i,j+1)];
        line(x2,y2);
    end
x2=[a(i,1) a(i,c)];y2=[b(i,1),b(i,c)]; f=line(x2,y2);
end
    for i=1:r-1
        for j=1:c-1
            s(i,j)=y1(i,j)*y1(i,j+1)*sin(theta(i))/2;
            l(i,j)=sqrt((a(i,j)-a(i,j+1))^2+(b(i,j)-b(i,j+1))^2);
        end
    end
   s=sum(s(1:r-1,:)');l=sum(l(1:r-1,:)');g=[sum(a(1:r-1,:)')/c;sum(b(1:r-1,:)')/c];
end