如何在编写matlab函数时处理多个输入?例如,如果n是运行时要传递的参数数量,那么我的函数原型将如何显示?任何帮助都会很好。感谢。
答案 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为此提供了一个非常好的简单解决方案:
答案 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