【发布时间】:2016-04-08 10:18:44
【问题描述】:
我第一次尝试使用 Matlab 的 inputParser,我不得不说我发现它有点混乱。我无法成功提供匿名函数作为可选参数。
这是我传递参数的函数
function myfun(str,bounds,varargin)
p = inputParser;
p.FunctionName = mfilename;
p.addRequired('str',@isstr);
p.addRequired('bounds',@isvector);
p.addOptional('str_latex','',@isstr);
p.addOptional('seed',[], @(x) isa(x,'function_handle'))
p.parse(str,bounds,varargin{:});
p.Results
% do something here
end
我这样称呼它......
myfun('str', 'epsilon',...
'str_latex', '\epsilon',...
'bounds', [0 1],...
'seed', @() betarnd(2,2))
但我得到一个错误:
使用我的乐趣时出错 “种子”的值无效。它必须满足函数:@(x)isa(x,'function_handle')。
我怀疑一个简单的错误,但我无法弄清楚。
【问题讨论】:
-
一个不相关的问题是您将错误的输入传递给
p.parse。由于您要传递str和bounds及其属性名称,因此传递给p.parse的str和bounds实际上是'str' 和'bounds' -
我不确定您何时选择了答案,但我为答案添加了更多解释和更多前进路径。