find matching values from two unequal size arrays

70 次查看(过去 30 天)
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.

采纳的回答

Stephen23
Stephen23 2018-11-10
编辑:Stephen23 2018-11-10
>> 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

更多回答(2 个)

madhan ravi
madhan ravi 2018-11-10
[ia,c,ib]=ismember(lat1,lat2)

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

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by