如何在编写 matlab 函数时处理多个输入

How to handle multiple inputs while writing a matlab function

如何在编写 matlab 函数时处理多个输入?例如,如果 n 是要在 运行 时间内传递的参数数量,那么我的函数原型将如何显示?任何帮助都会很好。谢谢。

如果参数的数量可以改变,Matlab 提供了一个非常好的和简单的解决方案:

http://www.mathworks.com/help/matlab/ref/varargin.html

具有不同数量参数的函数示例是:

function my_function(varargin)

% This is an example
min_arg = 1;
max_arg = 6;

% Check numbers of arguments
error(nargchk(min_arg,max_arg,nargin))

% Check number of arguments and provide missing values
if nargin==1
    w = 80;
end

% Your code ...

end

输出也是一样。

虽然对于参数很少的小函数,@GiacomoAlessandroni 的解决方案效果很好,但对于更复杂的函数,我建议采用不同的方法:使用 InputParser

它具有必需参数和可选参数,以及名称-值对。默认值的处理很容易,没有 if 子句。还有一个非常灵活的类型检查可用。

我没有自己创建示例,而是 post 来自上面链接的 MATLAB 帮助页面的示例。代码几乎是不言自明的。

function a = findArea(width,varargin)
    p = inputParser;
    defaultHeight = 1;
    defaultUnits = 'inches';
    defaultShape = 'rectangle';
    expectedShapes = {'square','rectangle','parallelogram'};

    addRequired(p,'width',@isnumeric);
    addOptional(p,'height',defaultHeight,@isnumeric);
    addParameter(p,'units',defaultUnits);
    addParameter(p,'shape',defaultShape,...
                  @(x) any(validatestring(x,expectedShapes)));

    parse(p,width,varargin{:});
    a = p.Results.width .* p.Results.height;
end