У меня есть функция, которая смотрит на несколько элементов. Каждый элемент имеет форму вектора столбца 8x1. Каждая запись в векторе является целым числом, меньшим 1000. Каждый раз, когда я вижу такой вектор, я бы хотел добавить его в список «уже увиденных» векторов, проверив, что вектора еще нет в этом списке. , Функция будет проверять порядка ~ 100 000 таких векторов.
Первоначально я пытался использовать ismember(v', M, 'rows')
, но обнаружил, что это очень медленно. Далее я попробовал:
found = containers.Map('KeyType', 'double', 'ValueType', 'any');
Затем каждый раз, когда я проверяю новый вектор v
, вычисляем:
key = dot(v, [1000000000000000000000 1000000000000000000 1000000000000000 ...
1000000000000 1000000000 1000000 1000 1]);
Тогда проверьте isKey(found, key)
. Если ключа нет в контейнере, то found(key) = 1
.
Это выглядит довольно паршивым решением, даже если оно работает значительно быстрее, чем ismember
. Любая помощь / предложения будут с благодарностью.
РЕДАКТИРОВАТЬ: Возможно, было бы лучше использовать mat2str
для генерации ключа, а не этот продукт глупых точек?