在MATLAB中有可能有默认参数吗?
例如,这里:
function wave(a, b, n, k, T, f, flag, fTrue=inline('0'))
我希望真正的解决方案是波函数的一个可选参数。如果可能,正确的方法是什么?
目前,我正在尝试我在上面发布的内容,我得到了:
??? Error: File: wave.m Line: 1 Column: 37
The expression to the left of the equals sign is not a valid target for an assignment.
发布于 2009-05-02 12:37:40
我使用了inputParser
对象来处理默认选项的设置。MATLAB不会接受您在问题中指定的类似Python的格式,但您应该能够像这样调用函数:
wave(a, b, n, k, T, f, flag, 'fTrue', inline('0'))
定义wave
函数后,如下所示:
function wave(a, b, n, k, T, f, flag, varargin)
i_p = inputParser;
i_p.FunctionName = 'WAVE';
i_p.addRequired('a', @isnumeric);
i_p.addRequired('b', @isnumeric);
i_p.addRequired('n', @isnumeric);
i_p.addRequired('k', @isnumeric);
i_p.addRequired('T', @isnumeric);
i_p.addRequired('f', @isnumeric);
i_p.addRequired('flag', @isnumeric);
i_p.addOptional('ftrue', inline('0'), 1);
i_p.parse(a, b, n, k, T, f, flag, varargin{:});
现在,传递给函数的值可以通过i_p.Results
获得。此外,我不确定如何验证为ftrue
传入的参数实际上是一个inline
函数,因此我将验证器留空。
发布于 2011-02-20 23:21:28
另一种稍微不那么老套的方法是
function output = fun(input)
if ~exist('input','var'), input='BlahBlahBlah'; end
...
end
发布于 2015-06-09 22:01:02
这是我为函数设置默认值的简单方法,使用"try":
function z = myfun (a, varargin)
%% Default values
b = 1;
c = 1;
d = 1;
e = 1;
try
b = varargin{1};
c = varargin{2};
d = varargin{3};
e = varargin{4};
end
%% Calculation
z = a * b * c * d * e;
end
https://stackoverflow.com/questions/795823
复制相似问题