matlab - 在不均匀列表上查找靠近的 Lon 值
问题描述
我有两个经度值矩阵。我想确定两个列表中靠近的点。我的问题是列表的长度不同
其中一个名为 Lon_pair,另一个名为 Lon_epa。
Lon_pair 的大小
size(Lon_pair)
12635 1
Lon_epa 的大小
size(Lon_epa)
20560 1
如何在 Lon_pair 中找到与 Lon_epa 中的点接近的点?或者找出它们之间的区别?
编辑:添加代码
clear all
close all
filename_pair = 'C:\Users\tadams15\Desktop\ALL_PAIR.csv';
data = xlsread(filename_pair);
Lon_pair = data(:,2);
Lat_pair = data(:,3);
Label_pair = data(:,4);
filename_epa = 'C:\Users\tadams15\Desktop\aqs.csv'
data2 = xlsread(filename_epa);
Lon_epa = data2(:,4);
Lat_epa = data2(:,5);
%% Find Lat/Lon Combos
for j = 1:20560
for i = 2:12636
d_lon(j) = Lon_epa(:) - Lon_pair(i);
d_lon_m(j) = d_lon/(9e-06);
if d_lon(:) < 300
[row,col] = find(d_lon)
end
end
end
解决方案
这对于非常大的数据集并不是最有效的,但它可能对您有用(或者至少是一个起点)。下面对两个数据集进行双循环,找到点之间的距离,保持与最小距离相对应的伴随数据集的最小值和行数。
% 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'};
推荐阅读
- python - 默认使用最新版本的 Python
- r - 将txt文件中的几行导入R中的单个案例
- python - “类”对象没有属性“ImageTk”
- python-3.x - leetcode 88 合并排序数组 python3 切片问题
- swift - 通过对象的枚举属性使用 NSPredicate 获取核心数据托管对象的问题
- c# - Moq 成员变量不会因设置无效而引发错误
- c# - RESTful API - 为每个实体创建“服务”和“接口”?
- r - 创建一个函数,不小心覆盖了输出
- bash - bash 变量替换和引用
- android - MaterialComponents 主题中断 TabLayout