Need to match Data

5 vues (au cours des 30 derniers jours)
Johannes
Johannes le 8 Oct 2012
Hello,
I like to match the entries in column 2 of matrix A to the reference numbers of B. I'm going to do that for large data sets. Code like follows does exactly what I want but will be to slow. Is there an intelligent function/way available to do that? Thanks a lot!
A = [2 3 5 7; 23 54 76 86]';
B = [1:7]';
j=1;
for i = 1:7
if B(i,1) == A(j,1)
B(i,2) = A(j,2);
j = j+1;
end
end
result: B =
1 0
2 23
3 54
4 0
5 76
6 0
7 86

Réponse acceptée

Matt Fig
Matt Fig le 8 Oct 2012
B(A(:,1),2) = A(:,2)
  2 commentaires
Matt Fig
Matt Fig le 8 Oct 2012
Johannes comments:
"Thank you. That was a bad example, my mistake.
What would be the solution for vectors like that:
A = [7 3 5 9; 23 54 76 86]';
B = [3:15]';"
Matt Fig
Matt Fig le 8 Oct 2012
Modifié(e) : Matt Fig le 8 Oct 2012
In that case:
A = [7 3 5 9; 23 54 76 86]';
B = [3:15]';
As = sortrows(A,1);
idx = ismember(B,As(:,1));
B(idx,2) = As(:,2)

Connectez-vous pour commenter.

Plus de réponses (2)

Andrei Bobrov
Andrei Bobrov le 8 Oct 2012
Modifié(e) : Andrei Bobrov le 8 Oct 2012
A = [7 3 5 9; 23 54 76 86]';
B = [3:15]';
[a,b] = ismember(B,A(:,1));
B(a,2) = A(b(a),2);

Johannes
Johannes le 9 Oct 2012
thank you all! My final solution is the following:
B(ismember(A),2)=A(ismember(A,B),2);
Works perfect and very fast.
Thank you again for your help.
Best, Johannes

Catégories

En savoir plus sur Data Type Identification dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by