InputParser and function handle
조회 수: 2 (최근 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!