在Matlab中比较两个矩阵的行式
我有两个矩阵要在Matlab中比较,在Matlab中比较两个矩阵的行式,matlab,Matlab,我有两个矩阵要在Matlab中比较,A维度MxN和C维度MxN。 如果存在I使得A(I,:)不同于C(I,:)或者0,我想得到一个等于1的索引 比如说 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=0(M,N),以及 (2) A只包含0和1,而C=1(M,N)您可以使用isequal执行元素相等,
A
维度MxN
和C
维度MxN
。
如果存在I
使得A(I,:)
不同于C(I,:)
或者0
,我想得到一个等于1
的索引
比如说
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=0(M,N)
,以及
(2)
A
只包含0和1,而C=1(M,N)
您可以使用isequal
执行元素相等,然后用~
对其求反,以查看是否存在A
和C
不同的情况
index = ~isequal(A, C)
如果A
和C
是浮点数,那么您将不希望使用完全相等的检查,而是使用类似
index = ~any(abs(A(:) - C(:)) < eps);
您可以使用
isequal
执行元素相等,然后使用~
对其求反,以查看是否存在A
和C
不同的情况
index = ~isequal(A, C)
如果A
和C
是浮点数,那么您将不希望使用完全相等的检查,而是使用类似
index = ~any(abs(A(:) - C(:)) < eps);
非常感谢。为什么我要为问题的第二部分添加其他条件?对不起,我不明白。假设
A=[11;0110;1011]
和C=[0 0;0 0;0 0 0]
。然后index=~isequal(A,C)
根据需要给我1。其他条件是什么呢?@user3285148但是如果A和C都是零,那么如果A=0(3,3)和C=0(3,3),通过执行索引=~isequal(A,C),你也会期望1
我得到了想要的零。@user3285148但是如果A
和C
都是零,那么这个标准就满足了:“A只包含零和一,C=0(M,N)”谢谢。为什么我要为问题的第二部分添加其他条件?对不起,我不明白。假设A=[11;0110;1011]
和C=[0 0;0 0;0 0 0]
。然后index=~isequal(A,C)
根据需要给我1。其他条件是什么呢?@user3285148但是如果A和C都是零,那么如果A=0(3,3)和C=0(3,3),通过执行索引=~isequal(A,C),你也会期望1
我根据需要得到零。@user3285148但如果A
和C
都是零,则满足此条件:“A只包含零和一,C=0(M,N)”