2017-02-09 9 views
-1

Например:MATLAB удалить дубликаты строк (неупорядоченная)

A = [1,3; 3,1; 2,10; 10,2; 3,4; 3,4; 5,8; 9,3; 1,8] 

и моя цель

A = [1,3; 2,10; 3,4; 5,8; 9,3; 1,8] 

один дубликат, (упорядоченные и неупорядоченные) должен быть удален.

Я пробовал уникальный, но он не работает для неупорядоченной строки.

+0

ли мой ответ помощи? – rayryeng

ответ

4

Вы можете sort строки по отдельности затем использовать unique и посмотреть на второй выходе , чтобы определить первый раз, когда вы видите конкретное вхождение в матрице. Вы также смотрите на строки как отдельные образцы, а также хотите получить стабильный результат, чтобы сохранить порядок того, что вы видите в матрице A. Сортировка позволяет рассматривать каждую строку неупорядоченно. В основном, второй вывод будет использоваться для индексации в строках A, чтобы вы извлекли то, что вам нужно в исходной матрице, а не сортировку. Результат будет удаление повторяющихся строк, игнорируя порядок записей, как они появляются в них:

[~,id,~] = unique(sort(A, 2), 'rows', 'stable'); 
out = A(id, :); 

Используя вход, которую вы предоставили, мы получаем:

>> [~,id,~] = unique(sort(A, 2), 'rows', 'stable'); 
>> out = A(id, :); 

>> out 

out = 

    1  3 
    2 10 
    3  4 
    5  8 
    9  3 
    1  8 

 Смежные вопросы

  • Нет связанных вопросов^_^