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,:);