假设A
和B
是多维数组维度的数量和大小先验未知。
如何比较维度的数量和相应的元素,以确保它们相等(或者对于双倍值比较接近)?
最佳答案
对于值的严格相等(当然还有维度),使用isequal
:isequal(A,B)
如果1
和true
大小相同且内容相等,则返回逻辑A
(B
),否则返回逻辑0
(false
)。
例子:
>> A = [1 2; 3 4];
>> B = [10 20 30];
>> equal = isequal(A,B)
equal =
0
等效地,您可以计算三个条件:
尺寸相同,
各尺寸相同,且
所有条目的值相同
,以便仅在满足前一个条件时才对每个条件进行评估:
equal = ndims(A)==ndims(B) && all(size(A)==size(B)) && all(A(:)==B(:));
这允许概括最后一个条件来测试足够接近的值:
tol = 1e-6;
equal = ndims(A)==ndims(B) && all(size(A)==size(B)) && all(abs(A(:)-B(:))<tol);