Matlab M文件变量检测与传递

时间:2022-08-16 10:34:56

M文件中变量的检测与传递

可变数量的输入输出变量(varargin,vararout):

Matlab的输入输出变量数量可变,并具有以下特点:

  1. 可变输入输出变量必须在正常变量之后
  2. varargin和vararout本身为元胞数组
  3. 在函数调用时,会优先把变量赋予正常变量,在赋予varargin和vararout
  4. 可以使用vargin和varout获取实际的输入输出参数数量

例:

 function varargout = spirallength2(d,n,varargin)

 % 画出螺旋线或螺旋条带

 % d螺旋的旋距

 % n:螺旋的圈数

 % varargin可输入变量第一个值可改变螺旋大小,之后的参数设定属性Nin=length(varargin)+;      %Nin为输入变量的长度+

 if nargout>                 %输出参数多于一个时报错

     error('Too many output arguement!');

 end

 j=sqrt(-);

 phi = :pi/:n**pi;

 amp = :d/:n*d;

 spir = amp .*exp(j*phi);    %准备数据

 if nargout==

     switch Nin

         case               %输入变量只有d,n

             plot(spir,'b');

         case               %可变输入变量varargin有一个varargin{}

             d1=varargin{};

             amp1=(:d/:n*d)+d1;

             spir1=amp1.*exp(j*phi);

             plot(spir,'b');

             hold on;        %开启绘图保留,原来的绘图不会被删除

             plot(spir1,'b');

             hold off;       %关闭绘图保留

         otherwise

             d1=varargin{};

             amp1=(:d/:n*d)+d1;

             spir1=amp1.*exp(j*phi);

             plot(spir,varargin{:end});   %使用varargin{}之后传的属性值

             hold on;

             plot(spir1,varargin{:end});

     end

     axis('square')        %坐标轴设置,使用相同长度的坐标轴线。相应调整数据单位之间的增量

 else                       %有一个输出参数的情况

     phi0=:pi/:n**pi;

     amp0=:d/:n*d;

     spir0=amp0 .*exp(j*phi0);

     varargout{}=sum(abs(diff(spir0)));

     if Nin>

         d1=varargin{};

         amp1=(:d/:n*d)+d1;

         spir1=amp1.*exp(j*phi0);

         varargout{}=sum(abs(diff(spir1)));

     end

 end

 end
  1. 在命令行输入:

>> spirallength2(2,2)

Matlab M文件变量检测与传递

输入参数只有d,n,无输出参数

  1. 在命令行输入:

>> spirallength2(2,2,1,'Marker','o')

Matlab M文件变量检测与传递

第三个输入参数’1’使得螺旋线直径加一,第4,5个参数使得螺旋线形状变为’o’

  1. 在命令行输入

>> a=spirallength2(2,2,1,'Marker','o')

Matlab M文件变量检测与传递

有输出参数,可获得螺旋线周长