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

1 visualización (últimos 30 días)
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)

Respuesta aceptada

Geoff Hayes
Geoff Hayes el 12 de Oct. de 2015
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.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by