2013-03-24 61 views
0

我用c=bsxfun(@eq,b,a)來比較兩個矩陣的值。但是我發現很難統計不匹配的值。例如,我使用此代碼使用bsxfun計數匹配值兩個矩陣

a = [1 2 3 4 7 6; ... 
    3 2 4 6 7 2 ]; 
b = [1 3 2 4 5 7; ... 
    3 4 5 6 7 2; ... 
    2 3 4 5 6 6]; 
for i = 1:size(a,1) 
    c= bsxfun(@eq,a(i,:),b) 
    match = sum(c') 
end 

並導致

c = 
    1  0  0  1  0  0 
    0  0  0  0  1  0 
    0  0  0  0  0  1 

match = 
    2  1  1 

c = 
    0  0  0  0  0  0 
    1  0  0  1  1  1 
    0  0  1  0  0  0 

match = 
    0  4  1 

我想保存值第一匹配矩陣與第二匹配。例如

total_match = 
    2 5 2 

你有什麼建議嗎?感謝..

回答

0

無需環路

match = bsxfun(@eq, permute(a, [1 3 2]), permute(b, [3 1 2])); % result in 2x3x6 boolean 
match = sum(match, 3); % sum matches across rows of a--b 
total_match = sum(match, 1); 

PS
It is best not to use i and j as variable names in Matlab

+0

好的,謝謝你的回答:D – user2203941 2013-03-24 08:13:18

+0

@ user2203941 - 如果這個答案適合你,請考慮[接受](http://stackoverflow.com/faq#howtoask)它。 – Shai 2013-03-24 08:27:18

+0

但如果我想要一個是mxn矩陣和b是pxn矩陣? – user2203941 2013-03-24 10:21:34