0

昨天我有一个问题并得到了一个关于删除矩阵中的双行的答案,但我无法弄清楚为什么它会省略矩阵中的某些行。

使用矩阵:

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

但是所有的方法似乎都省略了要删除的第一行......请帮忙,因为我已经花了几个小时试图自己修复它(我在编程方面很烂......)而且似乎没有任何效果。矩阵是一个例子,但通常如果两行在第一列中具有相同的值,我必须删除第二列

4

1 回答 1

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,:);
于 2013-05-29T23:48:47.193 回答