InputParser and function handle
1 次查看(过去 30 天)
显示 更早的评论
Hi,
I want to use the InputParser Class to check the inputs of a function. Basically my function looks like this
function a = myfun(b,varargin)
p = inputParser;
addRequired(p,'b',@isnumeric);
addOptional(p,'fun',@mean,@(x) isa(x,'function_handle'));
parse(p,b,varargin);
a = p.Results.fun(p.Results.b);
If I call this function, say with
a = myfun(rand(10,1),'fun',@mean)
Matlab throws an error saying
Error using myfun (line 8)
Argument 'fun' failed validation @(x)isa(x,'function_handle').
What am I doing wrong and what is the best way to pass a function handle through the inputParser?
Regards, Anon
0 个评论
回答(1 个)
Wolfgang
2013-3-25
You have to write:
parse(p,b,varargin{:});
In your case, the function handle is presented to the parser as part of a cell array (varargin) so it doesn't recognize it correctly.
1 个评论
Bjorn Gustavsson
2013-8-7
(I just ran into the same problem as Anon.) That varargin is a cell-array I understand, but shouldn't varargin{:} be the list of its contens, and that list is what the parse function should see?
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Argument Definitions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!