小编Eri*_*ric的帖子

如何在MATLAB中为此向量生成映射键?

我有一个正在查看许多元素的函数.每个元素都是8x1列向量的形式.向量中的每个条目都是一个小于1000的整数.每次看到这样的向量时,我都想将它添加到"已经看过"的向量列表中,然后检查该向量是否已经在此列表中.该函数将检查约100,000个这样的向量的顺序.

最初我尝试使用ismember(v', M, 'rows'),但发现这很慢.接下来我尝试了:

found = containers.Map('KeyType', 'double', 'ValueType', 'any');
Run Code Online (Sandbox Code Playgroud)

然后每次我检查一个新的向量v,计算:

key = dot(v, [1000000000000000000000 1000000000000000000 1000000000000000 ...
              1000000000000 1000000000 1000000 1000 1]);
Run Code Online (Sandbox Code Playgroud)

然后检查isKey(found, key).如果密钥不在容器中,那么found(key) = 1.

这似乎是一个非常糟糕的解决方案,即使它的运行速度要快得多ismember.任何帮助/建议将不胜感激.

编辑:也许用它mat2str来生成密钥更好,而不是这个傻点产品?

performance matlab key vector hashmap

5
推荐指数
1
解决办法
9324
查看次数

标签 统计

hashmap ×1

key ×1

matlab ×1

performance ×1

vector ×1