find matching values from two unequal size arrays

70 vues (au cours des 30 derniers jours)
akk
akk le 10 Nov 2018
Commenté : akk le 11 Nov 2018
I have two arrays of unequal length. [lat1 lon1 pCO2] say 200000 values in each column [lat2 lon2] say 100000 values in each column
I want to find where both lat2=lat1 and lon2=lon1, then take the pCO2 value from the first array and plug it into the second array as a new column.

Réponse acceptée

Stephen23
Stephen23 le 10 Nov 2018
Modifié(e) : Stephen23 le 10 Nov 2018
>> A1 = [1,2,3;4,5,6;7,8,9]
A1 =
1 2 3
4 5 6
7 8 9
>> A2 = [1,2;0,0;0,0;4,5]
A2 =
1 2
0 0
0 0
4 5
>> [ida,idb] = ismember(A2,A1(:,1:2),'rows');
>> A2(:,3) = NaN;
>> A2(ida,3) = A1(idb(ida),3)
A2 =
1 2 3
0 0 NaN
0 0 NaN
4 5 6

Plus de réponses (2)

madhan ravi
madhan ravi le 10 Nov 2018
[ia,c,ib]=ismember(lat1,lat2)
  2 commentaires
akk
akk le 10 Nov 2018
Thanks, but lon1 must also equal lon2
madhan ravi
madhan ravi le 10 Nov 2018
[ia1,c1,ib1]=ismember(lon1,lon2)

Connectez-vous pour commenter.


Andrei Bobrov
Andrei Bobrov le 10 Nov 2018
Let:
a = [lat1 lon1 pCO2];
b = [lat2 lon2];
b(:,3) = a(ismember(a(:,1:2),b,'rows'),3);
  1 commentaire
akk
akk le 10 Nov 2018
Thanks! This works! Only, because there are some rows in b without a match in a, b (:,3) is smaller than the number of rows in b. Is there a way to fill in those missing rows with a nan instead?

Connectez-vous pour commenter.

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by