我想验证(在函数中),矩阵A
的大小为a x b x c
,可能c=1
。
到目前为止,我有:
if size(A) ~= [ a b c ]
error('bad size');
end
但是,如果c=1
(和A
具有所需的尺寸):
size(A) = [ a b ]
因为size
删除了尾随单例维度。因此,比较将导致错误,因为向量([a b]
和[a b c]
)的大小不同。
有没有比
更好的东西if c == 1 && size(A) ~= [ a b ] || c ~= 1 && size(A) ~= [ a b c ]
error('bad size');
end
答案 0 :(得分:3)
validateattributes完成工作:
validateattributes(A, {'numeric'}, {'size', [ a b c ]});
如果c=1
和A
具有正确的尺寸,则不会失败。
答案 1 :(得分:1)
size(A)
的输出因其调用方式而异。对于您的情况,您可以简单地使用:
[a1,b1,c1] = size(A);
if(any([a1,b1,c1]~=[ a b c ]))
error('bad size');
end
答案 2 :(得分:1)
另一种解决方案是:
if (size(A) ~= [ a b c ](1:ndims(A)))
error('bad size');
end
只要A的维度不超过3个,这将有效。如果A确实有超过3个维度,那么您需要事先确定一个条件:
if (ndims(A)>3 || size(A)~=[a b c](1:ndims(A)))
error('bad size');
end
显然,如果超出第三个尺寸的A尺寸是单个尺寸,这将认为尺寸不合适......但这可能是可以接受的。