Reputation: 11
function res = display_grid(root_dir, output_dir,varargin)
ip = inputParser;
ip.addRequired('root_dir', @isstr);
ip.addRequired('output_dir', @isstr);
ip.addOptional('width', 160 , @isscalar);
ip.addOptional('height', 120, @isscalar);
ip.addOptional('ext', 'jpg', @isstr);
ip.addOptional('num_x', 5, @isscalar);
ip.addOptional('num_y', 4, @isscalar);
ip.addOptional('interval', 5 , @isscalar);
ip.addOptional('int_pix_value', 128, @isscalar);
ip.addOptional('seq_id', '0', @isstr);
But When I use it in this way:
display_grid('./dataset', './inpection', 'seq_id', '10');
it always prompt error like:
argment 'width' failed validation isscalar.
This is wired because I didn't use width when I use this function.
Upvotes: 0
Views: 178
Reputation: 24127
I think you probably want to use addParamValue
instead of addOptional
.
When using inputParser
, you have required arguments, optional arguments, and parameter-value arguments. Required arguments come first. Optional arguments come next, and you have to supply them in order. Parameter-value arguments come last, in any order.
What's happening here is that because you've specified all your arguments as optional, it's trying to use the value seq_id
for width, and it fails the validation isscalar
. Set them all to addParamValue
instead.
Upvotes: 2