我有两个矩阵可以在Matlab中进行比较,A
维度MxN
和C
维度MxN
。
如果1
i
与A(i,:)
和C(i,:)
不同,我希望获得等于0
的索引。
例如
A=[1 2 3; 4 5 6; 7 8 9];
C=[1 2 3; 4 5 6; 10 11 12];
index=1;
我想要最快的代码。
另外,对于
的情况,您是否可以提供代码的第二个版本(如果与之前不同)(1)A
仅包含0和1 C=zeros(M,N)
和
(2)A
仅包含0和1 C=ones(M,N)
。
答案 0 :(得分:3)
您可以使用isequal
执行元素相等,然后使用~
对其进行否定,以查看是否存在A
和C
不同的任何情况。
index = ~isequal(A, C)
如果A
和C
是浮点数,那么您将不希望使用完全等式检查并使用类似
index = ~any(abs(A(:) - C(:)) < eps);
至于问题的第二部分,你必须添加一个额外的条件
index = ~isequal(A, C) || ...
(all(ismember(A(:), [0 1])) && (all(C(:) == 0) || all(C(:) == 1)));