Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab总是无法使用inputParser进行验证_Matlab - Fatal编程技术网

matlab总是无法使用inputParser进行验证

matlab总是无法使用inputParser进行验证,matlab,Matlab,但当我这样使用它时: 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.

但当我这样使用它时:

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

这是有线的,因为我使用这个函数时没有使用宽度

我认为您可能希望使用
addParamValue
而不是
addOptional

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


这里发生的情况是,因为您已将所有参数指定为可选参数,所以它试图使用值
seq_id
作为宽度,并且验证
isscalar
失败。将它们全部设置为
addParamValue

此代码不完整,不会重现问题。请发布复制问题的完整(但最少)代码。请注意,最近版本的Matlab不赞成使用。@TroyHaskin只是为了澄清:在R2013b之前,唯一的方法是调用
addParamValue
。在R2013b中,引入了
addParameter
方法,不再推荐使用
addParamValue
(不过这只是名称的更改,它也做了同样的事情)。在将来的某个版本中,
addParamValue
可能会被弃用。但它还没有被弃用(从当前版本R2015b开始),并且可以在所有最新版本中使用。但你是对的,如果你有一个最新版本,你应该尝试使用
addParameter
而不是
addParamValue
,除非你需要向后兼容。这与现有的MathWorks文档中的
addoptional
addoptional(p,argName,default,validationFcn)不一致
因此最肯定的是需要
argName
。你还能如何在函数中使用这个值?@CarlWitthoft修复了这个问题。
argment 'width' failed validation isscalar.