matlab: удаление дублирующихся строк

У меня был вопрос, и я вчера получил ответ об удалении удвоенных строк в матрице, и я не могу понять, почему он пропускает определенные строки в матрице.

С матрицей:

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 ответ

Вы были на правильном пути...

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,:);
Другие вопросы по тегам