我正在从IDL迁移到Python,但是我需要一个在Python中找不到的例程。在
我想在一个相当平滑的二维阵列中检测峰值,它的形状等于(60300)。我只希望找到一两个峰(但绝不会超过4个)。在
有没有一个python例程类似于IDL的FindPeaks(链接如下)供我使用?在
http://hesperia.gsfc.nasa.gov/ssw/smei/ucsd/gen/idl/toolbox/findpeaks.pro
有关2D阵列/图像中峰值检测的stackoverflow的其他答案似乎被设计成返回多个(例如,>;20个)峰值(下面的链接)。这些都可以修改为平滑变化的数组吗?在
参见: Peak detection in a 2D array, Find peak of 2d histogram, Peak detection in a noisy 2d array
(事实上,我真正想要的是检测最小值,但网上似乎有更多关于最大值/峰值的问题。当我在IDL中使用FindPeaks时,我只是简单地颠倒了数据。)
经过一番尝试和错误,并改编了Peak detection in a 2D array中的代码,我得出了以下解决方案。注意:阈值=np平均值(图像)-np.标准(图像)
请随时发表任何改进,我对python还是个新手
可能会这样做(没有看另一个函数)
没有一个函数像你链接的那样。在
上面这个方法探索了整个空间,并按Y高度对其进行排序,给出了各种最大值(注意这与峰值略有不同)。对于大型数据集,这可能不是一个可接受的解决方案。。。要找到实际的峰值(也称为局部极大值),一个简单的算法是随机爬山,它将返回所有峰值(即一个高于相邻两个点的点)
然后,你可以只根据它们的Y分量对这些峰进行排序
相关问题 更多 >
编程相关推荐