Azzera filtri
Azzera filtri

please help me sort this out

1 visualizzazione (ultimi 30 giorni)
Elysi Cochin
Elysi Cochin il 6 Feb 2014
Commentato: Elysi Cochin il 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

Risposta accettata

Azzi Abdelmalek
Azzi Abdelmalek il 6 Feb 2014
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 Commenti
Elysi Cochin
Elysi Cochin il 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)
Jos (10584) il 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]

Accedi per commentare.

Più risposte (1)

Jos (10584)
Jos (10584) il 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 Commento
Elysi Cochin
Elysi Cochin il 7 Feb 2014
thank you so much for explaining me the difference....

Accedi per commentare.

Categorie

Scopri di più su Shifting and Sorting Matrices in Help Center e File Exchange

Tag

Non è stata ancora inserito alcun tag.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by