Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 MATLAB中的哈希表

MATLAB是否支持哈希表?

一些背景

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

如果k始终是整数,我将简单地创建一个3D数组,使得:

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

arr[find(array_of_ks_ = k)] = 乍一看似乎很不错,除了我可能会用大约20或30的k值进行数千次查找,而且我担心这会影响性能。

我想知道是否最好用某种哈希表来完成此操作,以便查找时间为O(1)而不是O(n)。

现在,我知道我不应该过早地进行优化,并且我可能根本不会遇到这个问题,但是请记住,这仅仅是背景,并且在某些情况下,这实际上是最好的解决方案,无论它是否是最佳解决方案。解决我的问题的最佳方法。



回答:

Matlab不支持哈希表。 编辑直到r2010a,即;参见@Amro的答案。

为了加快查找速度,您可以删除find ,然后使用LOGICAL INDEXING

arr{array_of_ks==k} = 要么

arr(:,:,array_of_ks==k) = 但是,根据我在Matlab上的所有经验,我从来没有遇到过瓶颈。

为了加快您的特定问题的速度,建议您使用增量过滤

arr{i} = GaussFilter(arr{i-1},sigma*s^(array_of_ks(i)) - sigma*s^(array_of_ks(i-1))) 假设array_of_ks按升序排序,并且GaussFilter根据方差(当然使用2个1D滤镜)计算滤镜掩码大小,或者您可以在傅立叶空间中滤镜,这对于大图像和方差特别有用间距均匀(很可能并非如此)。



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 04:59


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.