matlab - MATLAB 中的哈希表

标签 matlab hashtable

MATLAB 是否支持哈希表?


一些背景

我正在 Matlab 中解决一个问题,该问题需要图像的比例空间表示。为此,我为 k 在某个范围内创建了一个具有方差 sigma*s^k 的二维高斯滤波器,然后我依次使用每个滤波器来过滤图像。现在,我想要某种从 k 到过滤图像的映射。

如果 k 始终是整数,我会简单地创建一个 3D 数组,这样:

arr[k] = <image filtered with k-th guassian>

但是,k 不一定是整数,所以我不能这样做。我想做的是保留一个 k 数组,这样:

arr[find(array_of_ks_ = k)] = <image filtered with k-th guassian>

乍一看这似乎很好,除了我可能会使用大约 20 或 30 个 k 值进行此查找几千次,我担心这会损害性能。

我想知道如果我用某种哈希表来做这件事会不会更好,这样我的查找时间是 O(1) 而不是 O(n)。


现在,我知道我不应该过早地优化,我可能根本没有这个问题,但请记住,这只是背景,可能有一些情况这真的是最好的解决方案,无论是否这是问题的最佳解决方案。

最佳答案

考虑使用 MATLAB 的 map 类:containers.Map .以下是简要概述:

  • 创作:

    >> keys = {'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', ...
      'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Annual'};
    
    >> values = {327.2, 368.2, 197.6, 178.4, 100.0,  69.9, ...
      32.3,  37.3,  19.0,  37.0,  73.2, 110.9, 1551.0};
    
    >> rainfallMap = containers.Map(keys, values)
    
    rainfallMap = 
      containers.Map handle
      Package: containers
    
      Properties:
            Count: 13
          KeyType: 'char'
        ValueType: 'double'
      Methods, Events, Superclasses
    
  • 查找:

    x = rainfallMap('Jan');
    
  • 分配:

    rainfallMap('Jan') = 0;
    
  • 添加:

    rainfallMap('Total') = 999;
    
  • 删除:

    rainfallMap.remove('Total')
    
  • 检查:

    values = rainfallMap.values;
    keys = rainfallMap.keys;
    sz = rainfallMap.size;
    
  • 检查 key :

    if rainfallMap.isKey('Today')
        ...
    end
    

关于matlab - MATLAB 中的哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3591942/

相关文章:

matlab - 使用 Matlab 中的标准绘图函数绘制符号方程

java - 是否有一个库可以在 Java 中模拟 Matlab 的所有功能?

c - 适本地存储线程特定变量

java - 存储两种类型引用的哈希表数组

c++ - 一个哈希集可以找到 O(1) 的最小或最大元素?

go - 如何在使用线性探测解决冲突后从哈希表中检索值?

linear-algebra - 将 solve 和/或 linsolve 与 R2010b 中的符号工具箱一起使用

matlab - Matlab 中的 Char(非 ascii)

python - MATLAB 无法调用带有导入的 Python 模块

java - 为什么我们需要在哈希表键匹配中进行更多查找?