using attribute 'size' in validateattributes

조회 수: 9 (최근 30일)
Sina Shojaei
Sina Shojaei 2015년 2월 5일
댓글: Sina Shojaei 2015년 9월 8일
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.

채택된 답변

David Young
David Young 2015년 2월 5일
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
Adam
Adam 2015년 2월 6일
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 2015년 9월 8일
Thanks

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Daniel Lyddy
Daniel Lyddy 2015년 6월 12일
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

카테고리

Help CenterFile Exchange에서 Argument Definitions에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by