我有一个有两列的大矩阵。首先是索引,第二是数据。一些指数重复出现。如何仅保留具有重复索引的第一行实例?
例如:
x =
1 5.5
1 4.5
2 4
3 2.5
3 3
4 1.5
最终:
ans =
1 5.5
2 4
3 2.5
4 1.5
我尝试了
的各种变化和迭代[Uy, iy, yu] = unique(x(:,1));
[q, t] = meshgrid(1:size(x, 2), yu);
totals = accumarray([t(:), q(:)], x(:));
但到目前为止还没有给我提供我需要的输出。
答案 0 :(得分:4)
使用'first'
功能中的unique
标记,然后第二个输出为您提供所需的行索引,您可以使用这些索引来过滤'你的矩阵。
[~, ind] = unique(x(:,1), 'first');
ans = x(ind, :)
ans =
1.0000 5.5000
2.0000 4.0000
3.0000 2.5000
4.0000 1.5000
修改强>
或Jonas指出(尤其是旧的Matlab版本)
[~, ind] = unique(flipud(x(:,1)));
ans = x(flipud(ind), :)