简体   繁体   English

在Matlab中使用varargin

[英]use of varargin in matlab

I have a function contains input arguments as var1 to var5 , I want to use varargin in order to user-defined input arguments, how can I assing var1 to var5 to input arguments? 我有一个函数,其中包含从var1var5输入参数,我想使用varargin来输入用户定义的输入参数,如何将var1var5给输入参数? I tried, but this gives error as undeifned function or variable var1 . 我试过了,但这给出了错误,因为未定义函数或变量var1 How if I want to skip var2 when calling a function? 如果要在调用函数时跳过var2 ,该怎么办? My code: 我的代码:

function  out= myFunc(varargin)
varargin{1} = var1;
varargin{2} = var2;
varargin{3} = var3;
varargin{4} = var4;
varargin{5} = var5;
%operations on var1,var2,var3,var4 and var5 like
var1 == 'variable1';
end

Put the variable you are assigning to on the left hand of the = sign, not the right. 将要分配的变量放在=号的左侧,而不是右侧。

You can also use the colon operator on a cell array to do multiple assignment via a comma-separated list, if you know you'll aways get at least that many arguments passed to this function. 您还可以在单​​元格数组上使用冒号运算符,以逗号分隔的列表进行多次赋值,如果您知道您至少会获得传递给该函数的参数那么多。

[var1, var2, var3, var4, var5] = varargin{1:5};

If you know you'll have exactly five arguments, you can just use : when indexing in to the argument list. 如果您知道将只有五个参数,则可以在索引到参数列表时使用:

[var1, var2, var3, var4, var5] = varargin{:};

And if you're uninterested in a particular input argument, you can either omit it from the list of indexes on the right hand side, or use ~ as a placeholder on the left hand side to discard it. 而且,如果您对特定的输入参数不感兴趣,则可以从右侧的索引列表中将其忽略,也可以将~用作左侧的占位符以将其丢弃。 Let's say you only care about inputs 1, 3, and 4, and want to toss inputs 2 and 5. You can do either of these. 假设您只关心输入1、3和4,并想扔掉输入2和5。您可以选择其中之一。

[var1, var3, var4] = varargin{[1 3 4]};
[var1, ~, var3, var4, ~] = varargin{1:5};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM