gusucode.com > 《模式识别与智能计算》matlab源代码 > 《模式识别与智能计算》matlab源代码/《模式识别与智能计算》部分函数的源程序/书程序/第12章/star.m
function star(x,k) [n,m]=size(x); a1=min(x);r=max(x)-min(x);p=1/m; if k==4 x=(x-a1(ones(n,1),:))*2*pi./r(ones(n,1),:); else x=(x-a1(ones(n,1),:))*pi./r(ones(n,1),:); end switch k case 1 semicicle(0,0,1);hold on; for i=1:n semicicle(0,0,p); x1=0;y1=0; for j=1:m x1=x1+p*cos(x(i,j)); y1=y1+p*sin(x(i,j)); semicicle(x1,y1,p); end plot(x1,y1,'p');text(x1-0.04,y1+0.04,num2str(i)); end case 2 semicicle(0,0,1);hold on; for i=1:n x2=0;y2=0; for j=1:m x2=x2+p*cos(x(i,j)); y2=y2+p*sin(x(i,j)); end plot(x2,y2,'p');text(x2-0.04,y2+0.04,num2str(i)); end case 3 semicicle(0,0,1);hold on; for i=1:n x2=0;y2=0; for j=1:m x2=x2+p*cos(x(i,j)); x5(j)=x2; y2=y2+p*sin(x(i,j)); y5(j)=y2; end plot(x5,y5,'-');plot(x5(m),y5(m),'>');k4=[0 x5(1)];k5=[0 y5(1)]; line(k4,k5);text(x2-0.04,y2+0.04,num2str(i)); end case 4 theta=linspace(0,2*pi); xx=cos(theta);yy=sin(theta); plot(xx,yy);axis equal;hold on for i=1:n x2=0;y2=0; for j=1:m x2=x2+p*cos(x(i,j)); y2=y2+p*sin(x(i,j)); end plot(x2,y2,'p');text(x2-0.04,y2+0.04,num2str(i)); end axis off case 5 for i=1:n for j=1:m a(i,j)=cos(x(i,j));b(i,j)=sin(x(i,j)); end end aa=mean(a);bb=mean(b); for i=1:m for j=1:m a1=0; for k=1:n a1=a1+(aa(j)-a(k,j))*(aa(i)-a(k,j))+(bb(j)-b(k,j))*(bb(i)-b(k,i)); end s(i,j)=a1; end end pp=eye(m,m); w1=inv(s)*pp;w2=(pp'*inv(s)*pp); p2=(w1(:,1)./w2(:,1))'; semicicle(0,0,1);hold on; for i=1:n x2=0;y2=0; for j=1:m x2=x2+p2(j)*cos(x(i,j)); y2=y2+p2(j)*sin(x(i,j)); end plot(x2,y2,'p');text(x2-0.04,y2+0.04,num2str(i)); end end if k~=4 axis([-1.5 1.5 0 1.2]);axis off; end