Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 查找在不均匀列表中靠得很近的Lon值_Matlab_For Loop_If Statement_Latitude Longitude - Fatal编程技术网

Matlab 查找在不均匀列表中靠得很近的Lon值

Matlab 查找在不均匀列表中靠得很近的Lon值,matlab,for-loop,if-statement,latitude-longitude,Matlab,For Loop,If Statement,Latitude Longitude,我有两个经度值矩阵。我想指出两份清单中密切相关的几点。我的问题是列表的长度不同 其中一个名为Lon_pair,另一个名为Lon_epa Lon_配对的尺寸相同 size(Lon_pair) 12635 1 size(Lon_epa) 20560 1 龙êepa的尺寸很小 size(Lon_pair) 12635 1 size(Lon_epa) 20560 1 我如何在Lon_对中找到接近Lon_epa的点?或者找出它们之间的区别 编辑:

我有两个经度值矩阵。我想指出两份清单中密切相关的几点。我的问题是列表的长度不同

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

Lon_配对的尺寸相同

size(Lon_pair) 
12635       1
size(Lon_epa)
20560       1
龙êepa的尺寸很小

size(Lon_pair) 
12635       1
size(Lon_epa)
20560       1
我如何在Lon_对中找到接近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
全部清除
全部关闭
filename_pair='C:\Users\tadams15\Desktop\ALL_pair.csv';
数据=xlsread(文件名\u对);
Lon_对=数据(:,2);
Lat_对=数据(:,3);
标签对=数据(:,4);
filename\u epa='C:\Users\tadams15\Desktop\aqs.csv'
数据2=xlsread(文件名\u epa);
Lon_epa=数据2(:,4);
Lat_epa=数据2(:,5);
%%查找Lat/Lon组合
对于j=1:20560
对于i=2:12636
d_-lon(j)=lon-epa(:)-lon-u对(i);
d_lon_m(j)=d_lon/(9e-06);
如果d_lon(:)<300
[行,列]=查找(d_lon)
终止
终止
终止

对于非常大的数据集,这不是最有效的方法,但它可能适合您(或者至少是一个起点)。下面,通过两个数据集进行双循环,查找点之间的距离,保持对应于最小距离的伴随数据集的最小行数

% 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'};

但是长度有什么不同呢?无论如何,您必须遍历所有两个列表。您没有将类似列表1(1)与列表2(1)、列表1(2)与列表2(2)进行比较。我认为此问题的定义不正确,或者没有为列表的特征提供足够的详细信息。您可以为循环使用
,并引用较长的循环。您可能还想提供更多关于“紧密联系”的详细信息。@Y.Chang您好!对不起,我对这件事还不太熟悉。我有两个经度点列表。列表是指定的长度。我将它们的值转换为米,然后我想找到每个经度的索引,它距离另一个经度值不到500米。