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

时间:2015-03-12 15:49:21

标签: matlab symbolic-math

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

3 个答案:

答案 0 :(得分:1)

具有各种参数的函数示例是:

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

输出也一样。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

我没有自己创建示例,而是从上面链接的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