我最近遇到了一个问题,我应该定义一个输入数量不确定的函数,也就是说,输入的数量可能会根据实际情况而有所不同.我应该使用二维数组还是别的?我不知道struct2cell是否有用,以及它是如何工作的.
有没有人知道这样做的最佳方法?
我可能不太清楚,所以如果有任何需要澄清,请告诉我.
谢谢
有几种方法可以解决这个问题:
如果给定参数与上下文无关,则使用可选输入参数,但如果在某些情况下需要额外输入.
function out = myFun(first,second,third,fourth)
%# first is always needed
if nargin < 1 || isempty(first)
error('need nonempty first input')
end
%# second is optional
if nargin < 2 || isempty(second)
second = defaultValueForSecondWhichCanBeEmpty;
end
%# etc
Run Code Online (Sandbox Code Playgroud)
您可以将此函数称为out = myFun(1,[],2,3)
,即为不需要的输入传递空数组.
如果两个输入意味着该函数以单向使用,而三个输入意味着该函数以另一种方式使用(甚至输入意味着不同的东西),请使用VARARGIN
function out = myFun(varargin)
%# if 2 inputs, it's scenario 1, with 3 it's scenario 2
switch nargin
case 2
firstParameter = varargin{1};
secondParameter = varargin{2};
scenario = 1;
case 3
firstParameter = varargin{1}; %# etc
otherwise
error('myFun is only defined for two or three inputs')
end
Run Code Online (Sandbox Code Playgroud)
最后,您还可以将输入作为parameterName/parameterValue对传递.例如,请参阅有关如何处理此类输入的此问题.
归档时间: |
|
查看次数: |
2262 次 |
最近记录: |