2014-11-14 29 views
0

我有兩個矩陣之間的不同行的值,如BITXOR和計數兩個矩陣

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的值不同,則計數增加1.第三行A和第三行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時,我無法應用上面的代碼。發生了什麼?你能爲我編輯嗎?

回答

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) 
+0

非常感謝你 – user8264 2014-11-14 18:41:23

+0

你能看到我關於矩陣A的更新問題嗎?謝謝 – user8264 2014-11-14 18:51:12

+0

@ user8264查看更新。 – Nemesis 2014-11-14 18:56:33