美文网首页
Matlab 爱心甜甜圈

Matlab 爱心甜甜圈

作者: 吵吵人 | 来源:发表于2019-08-19 10:48 被阅读0次

    在函数声明过程中,如果将varargin和varargout作为输入参数列表和输出参数列表的最后一个参数,那么在函数调用时,函数就可以接受任意个数的输入参数。如函数a=foo(x,y,varargin)中,如果调用方式为a=foo(x,y,z),则varargin是长度为1的单元数组,并且varargin{1}=z。如果调用方式是a=foo(x,y,z,c),则varargin{1}=z,varargin{2}=c。varargout类似。
    具体使用看以下例子:

    function [xh,xy]=drawheart(varargin)
    %UNTITLED2 此处显示有关此函数的摘要
    %   此处显示详细说明
    error(nargchk(0,3,nargin));
    nin=nargin;
    if nin==0
        cx1=0;
        cy1=0;
        r=1.0;
    elseif nin==1
        cx1=0;
        cy1=0;
        r=varargin{1}
    elseif nin==2
        cx1=0;
        cy1=varargin{1};
        r=varargin{2};
    else
        cx1=varargin{1};
        cy1=varargin{2};
        r=varargin{3};
    end
    
    if nargout==0
        flag=1;
    else 
        flag=0;
    end
    
    %计算数组
    theta=linspace(0,2*pi,100);
    x0=r*cos(theta);
    y0=r*sin(theta);
    x1=x0+cx1;
    y1=y0+cy1;
    cx2=2*x0+cx1;
    cy2=2*y0+cy1;
    x3=x0.*cos(theta)-y0.*sin(theta);
    y3=x0.*sin(theta)+y0.*cos(theta);
    for k=1:100
        x2(k,:)=cx2(k)+x0;
        y2(k,:)=cy2(k)+y0;
        xx(k,:)=cx2(k)+x3(k);
        yy(k,:)=cy2(k)+y3(k);
    end
    if flag
        plot(cx1,cy1,'b','Markersize',6);
        hold on;
        plot(x1,y1);
        axis([cx1-3.2*r,cx1+3.2*r,cy1-3.2*r,cy1+3.2*r]);
        axis manual;
        hold on;
        daspect([1 1 1]);
        set(gcf,'doublebuffer','on');
        for k=1:100
            plot(x2(k,:),y2(k,:),'c',xx(k),yy(k),'r*');
            grid on;
            pause(0.05);
        end
    end
    

    调用:drawheart(0,2,3)
    结果:放不了动图,只能看图片了

    相关文章

      网友评论

          本文标题:Matlab 爱心甜甜圈

          本文链接:https://www.haomeiwen.com/subject/tbtssctx.html