函数:
我的MATLAB函数具有一个输出和几个输入参数,其中大多数是可选的,即:
output=MyFunction(arg1,arg2,opt1,opt2,...,optN)
我想做什么:我只想将arg1,arg2和最后一个可选输入参数optN赋予函数。我按如下所示使用代字号运算符:
output=MyFunction(str1,str2,~,~,...,true)
不良结果:这给出了以下错误信息:
Error: Expression or statement is incorrect--possibly unbalanced (, {, or [.
错误指向第一个波浪号后的逗号,但是老实说,我不知道该怎么做。问题识别:
如果您需要我的进一步信息,请告诉我。
非常感谢你!
最佳答案
代字号仅用于函数声明。 Matlab的mlint建议使用~
替换未使用的参数。结果是一个声明为function output = MyFunction(a, b, ~, c)
的函数。这是非常不好的做法。
由于您具有一个参数为可选的函数,因此必须使用空参数output=MyFunction(str1,str2,[],[],...,true)
调用该函数。
更好的方法是使用varargin
参数声明函数,并为不同的输入准备函数:
function output = MyFunction(varargin)
if nargin == 1
% Do something for 1 input
elseif nargin == 2
% Do something for 3 inputs
elseif nargin == 3
% Do something for 3 inputs
else
error('incorrect number of input arguments')
end
甚至可以如下声明您的函数:
function output = MyFunction(arg1, arg2, varargin)
上面的声明将告诉Matlab,您期望至少有两个参数。
请参阅
nargin
here的文档。...以及
varargin
here的文档