MATLAB删除第二次/第三次出现重复索引的行

时间:2013-04-24 14:29:59

标签: matlab matrix unique

我有一个有两列的大矩阵。首先是索引,第二是数据。一些指数重复出现。如何仅保留具有重复索引的第一行实例?

例如:

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(:));

但到目前为止还没有给我提供我需要的输出。

1 个答案:

答案 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), :)