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/