Discover MakerZone

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

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

please help me sort this out

Asked by Elysi Cochin on 6 Feb 2014
Latest activity Commented on by Elysi Cochin on 7 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

0 Comments

Elysi Cochin

Products

No products are associated with this question.

2 Answers

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

2 Comments

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] 
Azzi Abdelmalek
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,:)

1 Comment

Elysi Cochin on 7 Feb 2014

thank you so much for explaining me the difference....

Jos (10584)

Contact us