在matlab中是否有双向映射?

时间:2015-03-01 12:44:13

标签: matlab dictionary bidirectional

matlab中是否存在比使用容器更有效的双向地图数据结构。地图的键和值是否相反?另外,为此目的使用普通地图的最有效方法是什么?

1 个答案:

答案 0 :(得分:4)

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

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

您可以通过构建

自行实现此功能
inverse = containers.Map(original.values, original.keys)

或使用提供的Map2 - 类 文件交换中的MikkoLeppänen

  

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


如果您的键值对是正整数而您很少更改地图,则可以使用sparse,这应该非常有效。

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