matlab:重复行删除
昨天我问了一个问题,得到了一个关于删除矩阵中的加倍行的答案,我不明白为什么它会忽略矩阵中的某些行 使用矩阵:matlab:重复行删除,matlab,duplicates,duplicate-removal,Matlab,Duplicates,Duplicate Removal,昨天我问了一个问题,得到了一个关于删除矩阵中的加倍行的答案,我不明白为什么它会忽略矩阵中的某些行 使用矩阵: 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
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
但是所有的方法似乎都忽略了要删除的第一行。。。请帮忙,因为我已经花了几个小时试图自己修复它(我在编程方面很差劲…),但似乎什么都不管用。矩阵就是一个例子,但通常情况下,如果两行在第一列中具有相同的值,我必须删除第二行,因为您在正确的轨道上
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,:);