- 308
- 0
- 约3.32千字
- 约 5页
- 2020-07-21 发布于广东
- 举报
前些时间我需要用python 写一段代码来判别一个曲线图中有多少个峰,曲
线图类型大概如下图所示:
图1 原始曲线图
如果用肉眼鉴别,很容易就知道图中峰的个数为2。然而,计算机不是人脑
的思维方式,它靠的是数据和算法,因此需要将形象的东西数值化并将判别公式
化。当时我在百度以各种关键词查询如何写一段 python 程序来判别峰值并进行
个数的计算。然而都没有好的方法。
最简单粗暴的回答是,寻找这个曲线的最大值和最小值,显然,这个方法是
行不通的,从上面的图可以看到,第二个峰并不是最大值,但它确实是一个峰。
图2 寻找最大值和最小值确定波峰和波谷
然后我又查找了一下,有这么个方法,所谓峰值就是前后两个值都比当前的
值小,这样子的值便可以定义为峰值,并设计了代码如下:
图3 寻找极值作为峰值
这方法看上去很合理,可是在不平滑的曲线上会接连遇到问题,首选我们看
一下图1,红色箭头指示的两个位置,一个是噪声 (箭头1),它符合前后的值都
小于它的条件,会被判别为峰,而另一个 (箭头2),由于最高峰位置是个平顶,
不符合前后都大于它,会被认为不是峰,这些均导致
原创力文档

文档评论(0)