它需要可变数量的参数,但我如何检查特定变量参数是否存在,例如varargin{2}
,到目前为止我已尝试使用exist
但是我可能没有正确使用它
function vatest(testindex,varargin)
if (exist('varargin{1}','var'))
disp('oneexist')
else if (exist('varargin{2}','var'))
disp('twoexist')
end
end
例如vatest(1,2,3)
应该输出
twoexist
注意:我已经使用nargin
来获取输入数量,但请提出其他建议
更新:不使用缩写
的说明假设我有一个如上所述的测试功能
function vatest(testindex,textindex2,textindex3,varargin)
它有点像
if nargin >3
%%do something
if nargin >4
%%do something
if nargin >5
%%do something
if nargin >6
%%do something
if nargin >7
%%do something
if nargin >8
%%do something
由于某种原因,我不再需要输入中的testindex3然后我必须更改所有if conditions
的条件我希望它澄清
答案 0 :(得分:4)
varargin
只是一个包含输入的单元格数组。因此,您可以通过测试其长度来确定提供的输入数量:numel(varargin)
。
exist
并非真正为此而设计,并且可能比仅仅确定已知变量的长度要慢得多。
nInputs = numel(varargin)
if nInputs > 1
disp('More than 1 input')
elseif nInputs > 0
disp('Only 1 input')
else
disp('No inputs')
end
或更简单:
fprintf('%d inputs\n', numel(varargin));
答案 1 :(得分:1)
YEY我终于使用了sexist
函数:
function vatest(testindex,varargin)
values = {'zero','one','two', 'three', 'four'};
fprintf('%sexist',values{numel(varargin)})
end
出于某种原因,你不想在“一”和“存在”之间留一个空格。所以,这应该做你指定的(但不一定是你想要的)。
更严重的是,我建议switch
:
function vatest(testindex, varargin)
num_argin = numel(varargin);
fprintf('%d inputs', num_argin);
switch num_argin
case 1
% Some code
case 2
% Some code
case 3
% Some code
otherwise
% Some code