【问题标题】:Bitxor and Count the different rows values between two matrixes对两个矩阵之间的不同行值进行位异或计数
【发布时间】:2014-11-14 18:03:01
【问题描述】:

我有两个矩阵,例如

A =

     0     1     1     0
     0     0     1     1
     1     1     1     1
     1     0     1     0
     0     0     0     0

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。第三行A和第三行的值B行不同,那么现在计数值为2。因此,A和B之间逐行不同值的总和为2。matlab如何实现?

更新:感谢 Nemesis 提出第一个问题。现在我还有一个关于矩阵 A 的问题。我想在矩阵 A 的行之间实现位异或。为简单起见,我将rem 函数与 2 一起使用。异或的行的索引存储在索引数组中。这是我的代码

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 时,我无法应用上述代码。会发生什么?你能帮我编辑吗?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    这基本上与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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      相关资源
      最近更新 更多