matlab中有双向映射吗



在matlab中是否有比使用容器更高效的双向映射数据结构。将关键点和值映射到相反的方向?此外,使用普通地图达到此目的的最有效方法是什么?

containers.Map类本机不支持双向映射(自R2014b起)。支持的方法列在doc containers.Map:中

  • isKey:确定containers.Map对象是否包含密钥
  • keys:识别containers.Map对象的密钥
  • lengthcontainers.Map对象的长度
  • remove:从containers.Map对象中删除键值对
  • size:containers.Map对象的大小
  • values:标识containers.Map对象中的值

你可以自己实现这个功能,通过构建

inverse = containers.Map(original.values, original.keys)

或者使用由提供的Map2类Mikko Leppänen在文件交换:

[…]也是双向使用支持键值对(如Boost.Bimap库)。


如果键值对是正整数,并且很少更改映射,则可以使用sparse,这应该非常有效。

map = sparse(keys, 1, values);
inverseMap = sparse(nonzeros(map), 1, find(map))

相关内容

  • 没有找到相关文章

最新更新