matlab:重复删除行

时间:2013-05-29 12:15:00

标签: matlab duplicates duplicate-removal

我有一个问题,昨天得到一个关于删除矩阵中双倍行的answer,我无法弄清楚为什么它会忽略矩阵中的某些行。

使用矩阵:

tmp2 =

     0    1.0000
0.1000    1.0000
0.2000    1.0000
0.3000    1.0000
0.3000    2.0000
0.4000    2.0000
0.5000    2.0000
0.6000    2.0000
0.7000    2.0000
0.7000    3.0000
0.8000    3.0000
0.9000    3.0000
1.0000    3.0000
1.1000    3.0000
1.2000    3.0000

我需要删除行:

0.3000    2.0000    
0.7000    3.0000

我试着用

[~,b] = unique(tmp2(:,1));
tmp2(b,:) 

我自己写了一些东西

tmp3 = [];

for i=1:numel(tmp2(:,1))-1
    if tmp2(i,1) == tmp3    
        tmp2(i,:) = [];
    end
    tmp3 = tmp2(i,1);
end

但是所有方法似乎都省略了要移除的第一行......请帮助,因为我已经花了几个小时试图自己解决它(我很喜欢编程...)并且没有什么似乎有效。矩阵是一个例子,但通常如果第一列中有两行具有相同的值,我必须删除第二列

1 个答案:

答案 0 :(得分:0)

你走在正确的轨道上......

tmp2 = [...
0 1
1 1
2 3
2 5
3 5
4 7
5 4
5 8
6 1
];

现在像你一样调用unique,但使用标记first来获取第一个唯一身份:

[~,li]=unique(tmp2(:,1),'first');
tmp_unique = tmp2(li,:);