源码地址:https://bitbucket.org/lucashnegri/peakutils/src/master/peakutils/peak.py

参考链接:https://github.com/MonsieurV/py-findpeaks

find_peaks 算法流程:

输入信号为y  = np.array([1,1,1,4,1,3,4,7,6,1,3,2,1,9,0,8,8,8,7,1,1,1,6,2,9,9,9])

峰值检测的阈值为0.3

峰值检测的距离为min_dist=2

峰值检测幅值 thres=thres*(max-min)+min

1、获取一阶差分dy,以及差分为0 的下标位置

dy=[ 0,0,3,-3,2,1,3,-1,-5,2,-1,-1,8,-9,8,0,0,-1,-6,0,0,5,-4,7,0,0]

zeros=[ 0,1,15,16,19,20,24,25]

打印上述差分为0的点,可以获得如下图像

2、对zeros进行差分,以判断当前波形是否为水平的;并对zeros中的下标进行分组

zeros_diff=[1,14,1,3,1,4,1]

zeros_diff_not_one=[2,4,6] (第2,4,6个元素所在位置为非水平波形的位置)

以zeros_diff_not_one为切割点对zeros进行切割

zeros_plateaus=[[0,1],[15,16],[19,20],[24,25]] 其中每一行代表着一个水平波

3、对每一个水平波进行处理,使得每一个水平波中仅具有一个峰值转向点

在峰值点检测时,处于水平波中的各个点表现相同。故选取水平波中的中值点作为为一的峰值点。故对dy进行修正

若某一水平波处于信号起始位置,则dy在信号起始位置,向前填充;

dy=[ 3,3,3,-3,2,1,3,-1,-5,2,-1,-1,8,-9,8,0,0,-1,-6,0,0,5,-4,7,0,0]

若某一水平波处于信号结束位置,则dy在信号结束位置,向后填充;

dy=[ 3,3,3,-3,2,1,3,-1,-5,2,-1,-1,8,-9,8,0,0,-1,-6,0,0,5,-4,7,7,7]

若某一水平波处于信号中间位置,则dy在分别以中值为界,向前向后填充;

dy=[ 3,3,3,-3,2,1,3,-1,-5,2,-1,-1,8,-9,8,8,-1,-1,-6,-6,-1,5,-4,7,7,7]

4、获得符合峰值检测的峰值点

这一峰值点的判断依据为:dy[i]>0,dy[i+1]<0,y[i]>thres 那么i为信号的峰值点位置

5、使用峰值检测距离,筛除无效的峰值点

对上述峰值点,按照其幅值进行排序(从高到低),逐点提取峰值点。并以其为中心,为区间。将这一区间内的所有点均视为非峰值点。整个筛选流程如下所示:

最终能够获得峰值点的指示矩阵。

python find_peaks 源码理解相关推荐

  1. faster rcnn源码理解(二)之AnchorTargetLayer(网络中的rpn_data)

    转载自:faster rcnn源码理解(二)之AnchorTargetLayer(网络中的rpn_data) - 野孩子的专栏 - 博客频道 - CSDN.NET http://blog.csdn.n ...

  2. faster rcnn的源码理解(一)SmoothL1LossLayer论文与代码的结合理解

    转载自:faster rcnn的源码理解(一)SmoothL1LossLayer论文与代码的结合理解 - 野孩子的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/u ...

  3. TLD(Tracking-Learning-Detection)学习与源码理解之(六)

    TLD(Tracking-Learning-Detection)学习与源码理解之(六) zouxy09@qq.com http://blog.csdn.net/zouxy09 下面是自己在看论文和这些 ...

  4. python内存管理和释放_《python解释器源码剖析》第17章--python的内存管理与垃圾回收...

    17.0 序 内存管理,对于python这样的动态语言是至关重要的一部分,它在很大程度上决定了python的执行效率,因为在python的运行中会创建和销毁大量的对象,这些都设计内存的管理.同理pyt ...

  5. python解释器源码 pdf_《python解释器源码剖析》第0章--python的架构与编译python

    本系列是以陈儒先生的<python源码剖析>为学习素材,所总结的笔记.不同的是陈儒先生的<python源码剖析>所剖析的是python2.5,本系列对应的是python3.7. ...

  6. 从hotspot底层对象结构理解锁膨胀升级过程||深入jdk源码理解longadder的分段cas优化机制——分段CAS优化

    深入jdk源码理解longadder的分段cas优化机制 longadder

  7. TLD(Tracking-Learning-Detection)学习与源码理解之(五)

    TLD(Tracking-Learning-Detection)学习与源码理解之(五)   zouxy09@qq.com http://blog.csdn.net/zouxy09 下面是自己在看论文和 ...

  8. TLD(Tracking-Learning-Detection)学习与源码理解之(四)

    TLD(Tracking-Learning-Detection)学习与源码理解之(四) zouxy09@qq.com http://blog.csdn.net/zouxy09 下面是自己在看论文和这些 ...

  9. TLD(Tracking-Learning-Detection)学习与源码理解之(三)

    TLD(Tracking-Learning-Detection)学习与源码理解之(三) zouxy09@qq.com http://blog.csdn.net/zouxy09 下面是自己在看论文和这些 ...

  10. TLD(Tracking-Learning-Detection)学习与源码理解之(二)

    TLD(Tracking-Learning-Detection)学习与源码理解之(二) zouxy09@qq.com http://blog.csdn.net/zouxy09 OpenTLD下载与编译 ...

最新文章

  1. 去除文本框点击的背影
  2. Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意
  3. 使用变量_存储过程和函数及变量的使用
  4. 如何在Ubuntu 14.04下安装OpenGL开发环境
  5. [转载]eXeScope 6.50本地溢出分析
  6. Android studio安装及常见问题
  7. 使用ExpandoObject将XML转换为动态对象
  8. C语言结构体(struct)类型的各种用法
  9. Python猜数字(Guess Digit)
  10. *** error 65: access violation at C:0x001B : no 'execute/read' permission
  11. linux检查启动与否,关于linux启动的问题。
  12. select top 1 oracle,在ORACLE中SELECT TOP N的实现方法
  13. ubuntu 下openkore的运行
  14. 超详细域名和二级域名、子域名免费配置SSL证书变成升级HTTPS(完整配置文件)
  15. 奈奎斯特定理和香农定理解释
  16. STM8 I2C从机
  17. UED团队规范设计参考及建议
  18. 【测控电路】ADDA转换电路
  19. 上海中福会少年宫的前世今生
  20. 左手猎人游戏本,右手智能手表,荣耀如此长袖善舞

热门文章

  1. ARCore从零到一 (1) 搭建开发环境
  2. 机器学习之逻辑回归 Logistic Regression(三)scikit-learn算法库
  3. JAVA多线程设计模式篇 4、Guarded Suspension 模式——等我准备好了再来
  4. VSCode前端文件(html文件)以服务器模式在chrome浏览器打开
  5. CentOS7.5 远程桌面设置
  6. 计算机上无法获取,电脑无法获取有效ip 修复ip地址配置方法
  7. 美国最常见英文名字排行榜(500名)
  8. 编程中常见的各种符号英文名字
  9. 编写自己的Photon游戏服务器(Yanlz+Unity+Photon+Server+UNet+KBEngine+Socket+纤程+UDP+立钻哥哥+==)
  10. 升级mac系统正在计算机,苹果笔记本系统升级_苹果电脑Mac系统怎么升级