我有两个矩阵,例如
A =
0 1 1 0
0 0 1 1
1 1 1 1
1 0 1 0
0 0 0 0
B是 B =
0 1 1 0
1 1 1 1
-1 -1 -1 -1
1 0 1 0
0 0 0 0
我的任务是如何计算A和B之间逐行的不同数量。例如,第二行A和第二行B的值不同,然后计数增加1.第三行和第三行的值行B不同,那么计数值现在为2。因此,A和B之间逐行的总不同值是2.如何通过matlab实现它?
更新:感谢Nemesis提出的第一个问题。现在我对矩阵A有另一个问题。我希望在矩阵A的行之间实现bitxor。为简单起见,我使用rem
函数和2. xor在一起的行的索引存储在索引数组中。这是我的代码
index=[1 2 4] % row 1,2,4 will xor
output=rem(sum(A(index,:)),2);
以上代码适用于索引大小> 1。当索引大小等于1时,表示从A行复制输出值。例如,index = [1]然后是ouput=A(1)=0 1 1 0
。我的问题是,当索引大小等于1时,我无法应用上面的代码。会发生什么?你可以为我编辑吗?
答案 0 :(得分:2)
这与here几乎完全相同,但扩展名较小。总结一下,你可以使用@Andrey的答案
ix = sum(sum(abs(A-B),2)~=0)
ix =
2
关于您的问题的更新。问题是,单行的sum
将使用2
作为方向(而不是您想要的默认1
),因为size(...,1)==1
。您可以通过以下方式强制执行方向:
output=rem(sum(A(index,:),1),2)