find matching values from two unequal size arrays

64 Ansichten (letzte 30 Tage)
akk
akk am 10 Nov. 2018
Kommentiert: akk am 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.

Akzeptierte Antwort

Stephen23
Stephen23 am 10 Nov. 2018
Bearbeitet: Stephen23 am 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

Weitere Antworten (2)

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

Melden Sie sich an, um zu kommentieren.


Andrei Bobrov
Andrei Bobrov am 10 Nov. 2018
Let:
a = [lat1 lon1 pCO2];
b = [lat2 lon2];
b(:,3) = a(ismember(a(:,1:2),b,'rows'),3);
  1 Kommentar
akk
akk am 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?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by