查找在不均匀列表上接近的Lon值

时间:2019-03-21 13:39:17

标签: matlab for-loop if-statement latitude-longitude

我有两个经度值矩阵。我想确定两个列表中靠近的点。我的问题是列表的长度不同

其中一个名为Lon_pair,另一个名为Lon_epa。

Lon_pair大小

@charset "utf-8";

Lon_epa大小

size(Lon_pair) 
12635       1

如何在Lon_pair中找到与Lon_epa中的点接近的点?还是找到它们之间的区别?

编辑:添加代码

size(Lon_epa)
20560       1

1 个答案:

答案 0 :(得分:1)

对于大型数据集而言,这并不是最有效的方法,但它可能对您有用(或者至少是一个起点)。在两个数据集的双循环下方,查找点之间的距离,并保持伴随数据集的最小行数与最小距离相对应。

% set up dummy data to mimic UTM x,y (northing,easting) coordinates
x1 = randi([0,50000],20,1);
y1 = randi([-230000,420000],20,1);

x2 = randi([0,50000],12,1);
y2 = randi([-230000,420000],12,1);
% end set up


mydist = NaN(length(x1), 2); % pre-allocate

for ii = 1:length(mydist)
    xa = x1(ii);
    ya = y1(ii);
    temp_dist = NaN(length(x2), 2);
    for jj = 1:length(x2)
        xb = x2(jj);
        yb = y2(jj);
        temp_dist(jj, 1) = sqrt((xa-xb)^2 + (ya-yb)^2); % if you have the Statistics Toolbox, you can just use pdist
        temp_dist(jj, 2) = jj; % this is the row number in set2
    [value, index] = min(temp_dist(:,1));
    mydist(ii, 1) = value;
    mydist(ii, 2) = temp_dist(index, 2);
    end
end

mydist_table = array2table(mydist);
mydist_table.Properties.VariableNames = {'Clostest_Distance', 'Set2_RowNumber'};