DMu*_*ler 9 matlab function tilde
功能:
我的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的文档,上面的函数调用应该工作:
您可以在参数列表中的任何位置忽略任意数量的函数输入.用逗号分隔连续的波浪号...
我想有一些解决方法,例如使用''或[]作为输入,但我真的想了解如何正确使用'〜',因为实际上离开输入允许我在检查输入时使用exists()函数的参数.
如果您需要我的任何进一步信息,请告诉我.
非常感谢你!
代字号仅用于函数声明.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 此处的文档.
......以及这里的文件varargin