我有一个正在查看多个元素的函数。每个元素都是 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
生成密钥,而不是这个愚蠢的点积?