matlab始终无法使用inputParser进行验证

时间:2015-11-10 08:21:09

标签: matlab

setTokenizer(...)

但是当我以这种方式使用它时:

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);

它总是会提示错误,如:

display_grid('./dataset', './inpection', 'seq_id', '10');

这是有线的,因为我在使用此功能时没有使用宽度。

1 个答案:

答案 0 :(得分:2)

我认为您可能希望使用addParamValue代替addOptional

使用inputParser时,您需要参数,可选参数和参数值参数。首先是必需的参数。接下来是可选参数,您必须按顺序提供它们。参数值参数以任何顺序排在最后。

这里发生的事情是因为您已将所有参数指定为可选参数,因此尝试将值seq_id用于宽度,并且验证失败{{ 1}}。将它们全部设置为isscalar