假设AB是多维数组维度的数量和大小先验未知。
如何比较维度的数量和相应的元素,以确保它们相等(或者对于双倍值比较接近)?

最佳答案

对于值的严格相等(当然还有维度),使用isequal
isequal(A,B)如果1true大小相同且内容相等,则返回逻辑AB),否则返回逻辑0false)。
例子:

>> 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);

10-01 22:48