using attribute 'size' in validateattributes

8 visualizaciones (últimos 30 días)
Sina Shojaei
Sina Shojaei el 5 de Feb. de 2015
Comentada: Sina Shojaei el 8 de Sept. de 2015
Hi,Any idea how I can pass size of a matrix to validateattributes? I need to check that size(A,2) < 2, where A is the input to my function.
Would be appreciated.

Respuesta aceptada

David Young
David Young el 5 de Feb. de 2015
I'm pretty sure validateattributes can't do what you want.
If in fact A is required to be a column vector, you can use
validateattributes(A, {'numeric'}, {'column'}); % change class as appropriate
but if it's OK for A to be empty, or if it's possible for A to have 3 or more dimensions, then you need to write out the check in the conventional way:
if size(A,2) >= 2
error(...);
end
If you are using writing a checking function for inputParser, the answer is that it's possible to do what you want but a little more complex - please say if you need that.
  2 comentarios
Adam
Adam el 6 de Feb. de 2015
Or if emptiness is the only other option you want to accept in addition to a column I tend to use:
if ~isempty( A )
validateattributes(A, {'numeric'}, {'column'}); % change class as appropriate
end
Sina Shojaei
Sina Shojaei el 8 de Sept. de 2015
Thanks

Iniciar sesión para comentar.

Más respuestas (1)

Daniel Lyddy
Daniel Lyddy el 12 de Jun. de 2015
I think this might be what you want:
% set up validator
myValidMatrix = @(x) validateattributes(x, {'numeric'}, ...
{'real', '2d', 'size', [nan, 2]});
That nan in the 'size' vector is an "I don't care". If instead your array is 3D and you only care about the middle dimension, you would do:
myValidArray = @(x) validateattributes(x, {'numeric'}, ...
{'real', '3d', 'size', [nan, 2, nan]});
~Daniel

Categorías

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

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by