我试图了解MATLAB中位置参数的用法,我所指的是this页面。
假设我有一个如下定义的MATLAB函数:
function printPhoto(filename,varargin)
p = inputParser;
defaultFinish = 'glossy';
validFinishes = {'glossy','matte', 'colorful'};
checkFinish = @(x) any(validatestring(x,validFinishes));
defaultColor = 'RGB';
validColors = {'RGB','CMYK','colorful'};
checkColor = @(x) any(validatestring(x,validColors));
defaultWidth = 6;
defaultHeight = 4;
addRequired(p,'filename',@ischar);
addOptional(p,'finish',defaultFinish,checkFinish);
addOptional(p,'color',defaultColor,checkColor);
addParameter(p,'width',defaultWidth,@isnumeric);
addParameter(p,'height',defaultHeight,@isnumeric);
parse(p,filename,varargin{:});
end
当我如下调用上述函数时:printphoto('myFile.img', 'colorful')
,是否可以使第二个参数对应于函数定义中的第二个可选位置参数,即color='colorful'
而不是{{1} }?
答案 0 :(得分:1)
这是在混合可选位置参数和参数时所得到的。 恕我直言,您应该使用一个或另一个,但不能同时使用。
将参数定义为位置参数时,是在告诉MATLAB该输入将始终出现在该特定位置,如果确实出现。如果您想按输入顺序进行操作,那正是参数类型自变量的用途。
考虑一下,以下语法没有什么不同:
printphoto('myFile.img','color','colorful')
printphoto('myFile.img', color='colorful' )
因此,我建议您坚持使用参数类型的参数,但是如果您坚持让它们位于位置,请确保如果用户希望“跳过”输入,请为输入分配默认值(通过提供一些约定的内容) “空”值,例如""
或[]
)。