What test is validateattributes() using to check for attributes 'positive' or 'nonnegative' ? (possible bug)

2 次查看(过去 30 天)
Suppose a class MyClass with overloaded operators for comparison with numeric values. In other words, I can call
obj = MyClass();
obj > 0; obj >= 0; obj < 0; obj <=0;
and get appropriate results. However, the calls
validateattributes(obj,{'MyClass'},{'positive'})
validateattributes(obj,{'MyClass'},{'nonnegative'})
always fail. Is this a bug, or is validateattributes using something other than gt, ge, lt, le calls?
Thanks, -naor (R2014b)

采纳的回答

Geoff Hayes
Geoff Hayes 2015-10-12
Naor - for MATLAB R2014a (on OS X 10.9.5) in order for
validateattributes(obj,{'MyClass'},{'positive'})
to pass, you need the following anonymous function to resolve to true
@(x)(isnumeric(x)||islogical(x))&&isreal(x)&&~any(x(:)<=0)
where x is the instance of your MyClass. I suspect that all you are missing is the isreal overload as you should have the isnumeric and le already. For
validateattributes(obj,{'MyClass'},{'nonnegative'})
you need the following anonymous function to resolve to true
@(x)(isnumeric(x)||islogical(x))&&isreal(x)&&~any(x(:)<0)
with the only other function that you need to overload being the lt one.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Software Development Tools 的更多信息

标签

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by