using attribute 'size' in validateattributes
7 次查看(过去 30 天)
显示 更早的评论
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.
0 个评论
采纳的回答
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
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
更多回答(1 个)
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
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Argument Definitions 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!