MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

Asked by Elysi Cochin
on 6 Feb 2014

please can someone help me with a very simple coding... i know its simple but i'm not getting...

i 2 matrix with dimensions below,

A = with 13 rows and 125 columns B = with 1 row and 125 column,

i want to find which row of A matches with B if it does not match, i want to get the row which matches with most columns of B

please someone help me to sort it out, eg if A is,

34 44 55 66 23 33 22 27 21 44 66 34

if B = 23 33 22 27 i want ans = 2

if B = 27 44 66 34 i want ans = 3

*No products are associated with this question.*

Answer by Azzi Abdelmalek
on 6 Feb 2014

Accepted answer

A=[4 44 55 66 23 33 22 27 21 44 66 34] B=[23 33 22 27] [~,ii]=max(sum(ismember(A,B),2))

Elysi Cochin
on 6 Feb 2014

so simple... thank you so much sir.... i was using for loop and if condition.... great!!! you just did that in one line..... thank you so much sir....

Jos (10584)
on 6 Feb 2014

+1 Azzi

However, note that this does not care about the column order, which may or may not matter.

% Which row of A matches B the most? A = [1 2 3 5 ; 4 3 2 1] B = [1 2 3 4]

Answer by Jos (10584)
on 6 Feb 2014

When column number does matter:

% A : a N-by-M array % B : a 1-by-N row vector [~, ii] = max(sum(bsxfun(@eq,A,B),2)) RESULT = A(ii,:)

## 0 Comments