本站消息

站长简介/公众号


站长简介:逗比程序员,理工宅男,前每日优鲜python全栈开发工程师,利用周末时间开发出本站,欢迎关注我的微信公众号:幽默盒子,一个专注于搞笑,分享快乐的公众号

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

MATLAB 中的哈希表

发布于2021-08-18 03:15     阅读(1157)     评论(0)     点赞(20)     收藏(2)



MATLAB 是否支持哈希表?


一些背景

我正在处理 Matlab 中的一个问题,该问题需要图像的尺度空间表示。要做到这一点,我创建一个2-d高斯滤波器具有方差sigma*s^kk在一定范围内。,然后我使用依次每一个来过滤所述图像。现在,我想要某种映射k到过滤后的图像。

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

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

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

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

乍一看似乎很不错,除了我可能会使用大约 20 或 30 个 的值进行数千次这种查找k,而且我担心这会影响性能。

我想知道使用某种哈希表是否会更好地执行此操作,以便我的查找时间为 O(1) 而不是 O(n)。


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


解决方案


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

要加快查找速度,您可以删除find,并使用LOGICAL INDEXING

arr{array_of_ks==k} = <image filtered with k-th Gaussian>

要么

arr(:,:,array_of_ks==k) = <image filtered with k-th Gaussian>

但是,在我使用 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 个一维过滤器),或者您可以在傅立叶空间中进行过滤,这对于大图像特别有用,如果方差为均匀间隔(不幸的是,它们很可能不是)。






所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1023428/fa5dc55faee0b99079f2/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

20 0
收藏该文
已收藏

评论内容:(最多支持255个字符)