我有一个问题,昨天得到一个关于删除矩阵中双倍行的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
但是所有方法似乎都省略了要移除的第一行......请帮助,因为我已经花了几个小时试图自己解决它(我很喜欢编程...)并且没有什么似乎有效。矩阵是一个例子,但通常如果第一列中有两行具有相同的值,我必须删除第二列
答案 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,:);