MATLAB:从矩阵

时间:2017-01-06 18:55:24

标签: matlab matrix unique

我有一个纬度矩阵,一个经度矩阵,以及这些纬度/经度点的测量矩阵。

某些纬度/经度点有多个测量值。我想要一种从矩阵中删除重复测量的方法,只保留较大的测量值。

所以使用数据:

lat  = [0,1,2,3,1,2]
lon  = [0,1,2,3,1,4]
data = [5,6,7,8,9,10]

将删除(1,1)处的测量值为6的数据点,从而导致:     lat = [0,2,3,1,2]     lon = [0,2,3,1,4]     data = [5,7,8,9,10]

1 个答案:

答案 0 :(得分:2)

您可以在列为'rows'lat变量的矩阵上使用unique lon选项。这将为您提供唯一的latlon组合,它为您提供了一个索引(第三个输出),可以传递给accumarray返回datalat的每个唯一组合的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

如果您需要按data值排序的纬度和经度(正如您在问题中所示):

[maxdata, ind] = sort(maxdata);
%   5   7   8   9   10

latitude = latlon(ind,1);
%   0   2   3   1   2

longitude = latlon(ind,2);
%   0   2   3   1   4