2013-03-24 1 views
0

Я использую c=bsxfun(@eq,b,a), чтобы сравнить значение двух матриц. но мне трудно подсчитывать несоответствующие значения. например, я использую этот кодcount match value two matrix using 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

+0

@ user2203941 - если этот ответ работает на вас, рассмотрите [принятие] (http://stackoverflow.com/faq#howtoask). – Shai

+0

, но как если бы я хотел, чтобы матрица была mxn, а b - матрицей pxn? – user2203941

 Смежные вопросы

  • Нет связанных вопросов^_^