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.