函数:
我的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 2013b,它支持波浪号运算符。
  • 根据MATLAB的文档,上述函数调用应该可以工作:

  • 我猜有一些解决方法,例如使用''或[]作为输入,但是我真的很想了解如何正确使用'〜',因为实际上省略输入允许我在检查函数的输入参数。

  • 如果您需要我的进一步信息,请告诉我。
    非常感谢你!

    最佳答案

    代字号仅用于函数声明。 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的文档

    09-10 04:17
    查看更多