Bitxor和Count两个矩阵之间的不同行值

时间:2014-11-14 18:03:01

标签: matlab

我有两个矩阵,例如

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时,我无法应用上面的代码。会发生什么?你可以为我编辑吗?

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)