在MATLAB中验证输入时的最佳实践

时间:2011-09-22 11:58:38

标签: matlab validation

在MATLAB函数中验证输入时,何时使用inputParser比断言更好。或者还有其他更好的工具吗?

1 个答案:

答案 0 :(得分:5)

我个人发现使用inputParser不必要的复杂。对于Matlab,总有3件事要检查 - 存在,类型和范围/值。有时您必须指定默认值。下面是一些示例代码,非常典型的错误检查:dayofWeek是参数,函数中的第3个。 (添加了额外的注释。)这些代码大部分早于Matlab中assert()的存在。我在后面的代码中使用asserts而不是if ... error()构造。

%Presence
if nargin < 3 || isempty(dayOfWeek);
    dayOfWeek = '';
end

%Type
if ~ischar(dayOfWeek);
    error(MsgId.ARGUMENT_E, 'dayOfWeek must be a char array.');
end

%Range
days = { 'Fri' 'Sat' 'Sun' 'Mon' 'Tue' 'Wed' 'Thu' };

%A utility function I wrote that checks the value against the first arg, 
%and in this case, assigns the first element if argument is empty, or bad.
dayOfWeek = StringUtil.checkEnum(days, dayOfWeek, 'assign');

%if I'm this far, I know I have a good, valid value for dayOfWeek