• Matlab M文件变量检测与传递


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

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

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

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

    例:

     1 function varargout = spirallength2(d,n,varargin)
     2 
     3 % 画出螺旋线或螺旋条带
     4 
     5 % d螺旋的旋距
     6 
     7 % n:螺旋的圈数
     8 
     9 % varargin可输入变量第一个值可改变螺旋大小,之后的参数设定属性Nin=length(varargin)+1;      %Nin为输入变量的长度+1
    10 
    11 if nargout>1                 %输出参数多于一个时报错
    12 
    13     error('Too many output arguement!');
    14 
    15 end
    16 
    17 j=sqrt(-1);
    18 
    19 phi = 0:pi/20:n*2*pi;
    20 
    21 amp = 0:d/40:n*d;
    22 
    23 spir = amp .*exp(j*phi);    %准备数据
    24 
    25 if nargout==0
    26 
    27     switch Nin
    28 
    29         case 1              %输入变量只有d,n
    30 
    31             plot(spir,'b');
    32 
    33         case 2              %可变输入变量varargin有一个varargin{1}
    34 
    35             d1=varargin{1};
    36 
    37             amp1=(0:d/40:n*d)+d1;
    38 
    39             spir1=amp1.*exp(j*phi);
    40 
    41             plot(spir,'b');
    42 
    43             hold on;        %开启绘图保留,原来的绘图不会被删除
    44 
    45             plot(spir1,'b');
    46 
    47             hold off;       %关闭绘图保留
    48 
    49         otherwise
    50 
    51             d1=varargin{1};
    52 
    53             amp1=(0:d/40:n*d)+d1;
    54 
    55             spir1=amp1.*exp(j*phi);
    56 
    57             plot(spir,varargin{2:end});   %使用varargin{2}之后传的属性值
    58 
    59             hold on;
    60 
    61             plot(spir1,varargin{2:end});
    62 
    63     end
    64 
    65     axis('square')        %坐标轴设置,使用相同长度的坐标轴线。相应调整数据单位之间的增量
    66 
    67 else                       %有一个输出参数的情况
    68 
    69     phi0=0:pi/1000:n*2*pi;
    70 
    71     amp0=0:d/2000:n*d;
    72 
    73     spir0=amp0 .*exp(j*phi0);
    74 
    75     varargout{1}=sum(abs(diff(spir0)));
    76 
    77     if Nin>1
    78 
    79         d1=varargin{1};
    80 
    81         amp1=(0:d/2000:n*d)+d1;
    82 
    83         spir1=amp1.*exp(j*phi0);
    84 
    85         varargout{1}=sum(abs(diff(spir1)));
    86 
    87     end
    88 
    89 end
    90 
    91 end

     

    1. 在命令行输入:

    >> spirallength2(2,2)

     

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

    1. 在命令行输入:

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

     

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

    1. 在命令行输入

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

     

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

  • 相关阅读:
    Oracle:SQL语句--对表的操作——删除表
    Oracle:SQL语句--对表的操作——修改表名
    Oracle:SQL语句--对表的操作——修改表名
    Oracle:SQL语句--对表的操作—— 删除字段(即删除列)
    网络配置4:vlan间通信配置
    网络配置3:动态路由配置
    网络配置2:静态路由配置
    网络配置0:网络设备基础知识
    网络配置1:VLAN配置
    T-SQL之数据操作(一):增删改
  • 原文地址:https://www.cnblogs.com/asahiLikka/p/11577737.html
Copyright © 2020-2023  润新知