Как найти уникальные строки в матрице без порядка элементов в каждой строке?
4115 просмотра
4 ответа
У меня есть массив, состоящий из n строк и 4 столбцов. Каждая из четырех записей в строке является целым числом, т.е.
X = [
111 112 432 2
6 9 115 111
112 432 111 2
];
Каждый ряд представляет вершины тетраэдра. Эти вершины не имеют направленности, поэтому в вышеприведенном случае тетраэдры, представленные X (1, :) и X (3, :), эквивалентны.
Я хочу удалить дубликаты тетраэдров из X, но не могу понять, как включить независимость порядка в мой код.
Я пробовал функцию UNIQUE (), но это возвращает (nx1) массив уникальных целых чисел, т. Е.
Y = UNIQUE(X);
Y = [
2
6
9
111
112
115
432
]
У кого-нибудь есть предложения относительно достаточно эффективного способа решения этой задачи?
Спасибо, S :-)
Автор: Darren J. Fitzpatrick Источник Размещён: 12.11.2019 09:37Ответы (4)
9 плюса
Сначала отсортируйте строки вашей матрицы, чтобы получить «каноническое» представление для тетраэдров:
X = sort(X, 2);
Затем используйте unique
необязательный 'rows'
аргумент для поиска уникальных строк:
Y = unique(X, 'rows');
Автор: Martin B
Размещён: 15.07.2010 10:56
5 плюса
unique () будет работать со строками, но строки 1 и 3 имеют другой порядок. Таким образом, мы могли бы отсортировать их до использования уникальных.
Y=unique(sort(X,2),'rows')
Y =
2 111 112 432
6 9 111 115
Если вы хотите сохранить первоначальный порядок, то unique вернет индексы
[Y,yi]=unique(sort(X,2),'rows');
>> X(yi,:)
ans =
112 432 111 2
6 9 115 111
Автор: Adrian
Размещён: 15.07.2010 11:04
3 плюса
Цитировать из документации:
b = unique (A, 'lines') возвращает уникальные строки A.
Это то, что вы хотите ?
Автор: High Performance Mark Размещён: 15.07.2010 10:541 плюс
сначала нужно отсортировать строки, а затем использовать уникальные (A, 'строки'), как предлагает HPM
Автор: Sanjay Manohar Размещён: 15.07.2010 10:57Вопросы из категории :
- arrays Как удалить дубликаты из массива C #?
- arrays Как определить размер моего массива в C?
- arrays Каков наилучший способ конвертировать массив в хеш в Ruby
- arrays Сравнение двухбайтовых массивов в .NET
- arrays Можно ли выполнять параллельные обходы в MATLAB так же, как в Python?
- arrays Haxe итерация на динамическом
- matlab Каковы эффективные способы объединения двух структур в MATLAB?
- matlab Каков самый простой способ экспортировать данные Excel в Matlab?
- matlab Как работают свойства в объектно-ориентированном MATLAB?
- matlab Как нарисовать график поверхности без черных краев в MATLAB?
- matlab Как я могу сохранить измененное изображение в MATLAB?
- unique Как вы удаляете дубликаты из списка, сохраняя порядок?
- unique C #: Как бы вы создали уникальное имя файла, добавив номер?
- unique Получить все уникальные значения в массиве JavaScript (удалить дубликаты)
- unique Как проверить, содержит ли таблица элемент в Lua?
- unique Джанго уникальное поле
- unique Как найти уникальные строки в матрице без порядка элементов в каждой строке?