MATLAB:从矩阵中删除重复的lat/lon点和相应的数据点
我有一个纬度矩阵,一个经度矩阵,还有这些纬度/经度点的测量矩阵 某些lat/lon点具有多个测量值。我想要一种从矩阵中删除重复测量值的方法,只保留较大的测量值 因此,根据数据:MATLAB:从矩阵中删除重复的lat/lon点和相应的数据点,matlab,matrix,unique,Matlab,Matrix,Unique,我有一个纬度矩阵,一个经度矩阵,还有这些纬度/经度点的测量矩阵 某些lat/lon点具有多个测量值。我想要一种从矩阵中删除重复测量值的方法,只保留较大的测量值 因此,根据数据: lat = [0,1,2,3,1,2] lon = [0,1,2,3,1,4] data = [5,6,7,8,9,10] 测量值为6的(1,1)处的数据点将被删除,从而导致: lat=[0,2,3,1,2] lon=[0,2,3,1,4] data=[5,7,8,9,10]您可以在矩阵上使用'rows'选项,其中
lat = [0,1,2,3,1,2]
lon = [0,1,2,3,1,4]
data = [5,6,7,8,9,10]
测量值为6的(1,1)处的数据点将被删除,从而导致:
lat=[0,2,3,1,2]
lon=[0,2,3,1,4]
data=[5,7,8,9,10]您可以在矩阵上使用'rows'
选项,其中列是lat
和lon
变量。这将为您提供唯一的lat
和lon
组合,并为您提供一个索引(第三个输出),可通过该索引返回数据中对于lat
和lon
的每个唯一组合的最大值
% Find the unique combinations of latitude and longitude
[latlon, ~, inds] = unique([lat(:), lon(:)], 'rows', 'stable');
% Find the maximum value in data for each unique lat/lon combo
maxdata = accumarray(inds, data(:), [], @max);
% 5 9 7 8 10
% Expand out latlon variable if needed
latitude = latlon(:,1);
% 0 1 2 3 2
longitude = latlon(:,2);
% 0 1 2 3 4
如果您需要按数据
值排序的纬度和经度(如您在问题中所示):
您可以在矩阵上使用'rows'
选项,其中列是lat
和lon
变量。这将为您提供唯一的lat
和lon
组合,并为您提供一个索引(第三个输出),可通过该索引返回数据中对于lat
和lon
的每个唯一组合的最大值
% Find the unique combinations of latitude and longitude
[latlon, ~, inds] = unique([lat(:), lon(:)], 'rows', 'stable');
% Find the maximum value in data for each unique lat/lon combo
maxdata = accumarray(inds, data(:), [], @max);
% 5 9 7 8 10
% Expand out latlon variable if needed
latitude = latlon(:,1);
% 0 1 2 3 2
longitude = latlon(:,2);
% 0 1 2 3 4
如果您需要按数据
值排序的纬度和经度(如您在问题中所示):