https://www.jb51.net/article/180654.htm

python求极值点主要用到scipy库。

1. 首先可先选择一个函数或者拟合一个函数,这里选择拟合数据:np.polyfit

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

import pandas as pd

import matplotlib.pyplot as plt

import numpy as np

from scipy import signal #滤波等

xxx = np.arange(0, 1000)

yyy = np.sin(xxx*np.pi/180)

z1 = np.polyfit(xxx, yyy, 7) # 用7次多项式拟合

p1 = np.poly1d(z1) #多项式系数

print(p1) # 在屏幕上打印拟合多项式

yvals=p1(xxx)

plt.plot(xxx, yyy, '*',label='original values')

plt.plot(xxx, yvals, 'r',label='polyfit values')

plt.xlabel('x axis')

plt.ylabel('y axis')

plt.legend(loc=4)

plt.title('polyfitting')

plt.show()

得到的图形是:

2. 求波峰值,也就是极大值,得到:signal.find_peaks

1

2

3

4

5

6

7

8

9

10

11

12

13

# 极值

num_peak_3 = signal.find_peaks(yvals, distance=10) #distance表极大值点的距离至少大于等于10个水平单位

print(num_peak_3[0])

print('the number of peaks is ' + str(len(num_peak_3[0])))

plt.plot(xxx, yyy, '*',label='original values')

plt.plot(xxx, yvals, 'r',label='polyfit values')

plt.xlabel('x axis')

plt.ylabel('y axis')

plt.legend(loc=4)

plt.title('polyfitting')

for ii in range(len(num_peak_3[0])):

 plt.plot(num_peak_3[0][ii], yvals[num_peak_3[0][ii]],'*',markersize=10)

plt.show()

3. 在可导的情形下,可以求导来求极值点,同时得到极大值和极小值点:np.polyder

1

2

yyyd = np.polyder(p1,1) # 1表示一阶导

print(yyyd)

此时:yyyd.r 即可就得导数为0的点,可以与上述的极大值点对应比较

4. 直接函数分别求极大值和极小值:signal.argrelextrema 函数

1

2

3

4

5

6

7

8

9

10

11

12

print(yvals[signal.argrelextrema(yvals, np.greater)]) #极大值的y轴, yvals为要求极值的序列

print(signal.argrelextrema(yvals, np.greater)) #极大值的x轴

peak_ind = signal.argrelextrema(yvals,np.greater)[0] #极大值点,改为np.less即可得到极小值点

plt.plot(xxx, yyy, '*',label='original values')

plt.plot(xxx, yvals, 'r',label='polyfit values')

plt.xlabel('x axis')

plt.ylabel('y axis')

plt.legend(loc=4)

plt.title('polyfitting')

plt.plot(signal.argrelextrema(yvals,np.greater)[0],yvals[signal.argrelextrema(yvals, np.greater)],'o', markersize=10) #极大值点

plt.plot(signal.argrelextrema(yvals,np.less)[0],yvals[signal.argrelextrema(yvals, np.less)],'+', markersize=10) #极小值点

plt.show()

总结

以上所述是小编给大家介绍的python计算波峰波谷值的方法(极值点),希望对大家有所帮助,也非常感谢大家对脚本之家网站的支持!

python计算波峰波谷值的方法(极值点)相关推荐

  1. java 波峰检测_脉搏波波峰波谷自动检测方法

    脉搏波波峰波谷自动检测方法 [技术领域] [0001]本发明属人体健康监护技术领域,涉及一种脉搏波波峰波谷自动检测方法,尤其涉及脉搏波中存在大量人为.系统噪声以及心率快速变化的情况.可用于临床心电图自 ...

  2. php计算对角线,python计算对角线有理函数插值的方法

    本文实例讲述了python计算对角线有理函数插值的方法.分享给大家供大家参考.具体实现方法如下: ''' p = rational(xData,yData,x) Evaluates the diago ...

  3. python计算回文数的方法_Python计算回文数的方法

    本文实例讲述了Python计算回文数的方法.分享给大家供大家参考.具体如下: 这里检查数字是不是回文数,用196算法生成一个数字的回文数 num = 905; def is_Palindrome(nu ...

  4. python计算得到auc值

    python计算得到auc值 数据 #得到AUC值 # avgAUC calculation vg = valid1.groupby(['Coupon_id']) aucs = [] for i in ...

  5. python计算文件md5值_用python计算文件的MD5值

    md5是一种常见不可逆加密算法,使用简单,计算速度快,在很多场景下都会用到,比如:给用户上传的文件命名,数据库中保存的用户密码,下载文件后检验文件是否正确等.下面讲解在python中如何使用md5算法 ...

  6. python计算文件md5值_用python 正确计算大文件md5 值

    python 计算文件的md5值很方便,但如果只是简单的把文件都入到内存中,大文件会导致问题,一般采用切片的方式分段计算,下面的几个函数可以很好的解决这个问题. 使用 hashlib import h ...

  7. 【python圆周率计算】python计算圆周率π的值到任意位

    无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程.人工智能教程 一.需求分析 输入 ...

  8. python计算派的值_使用 Python 计算 π 值

    π是一个无数人追随的真正的神奇数字.我不是很清楚一个永远重复的无理数的迷人之处.在我看来,我乐于计算π,也就是计算π的值.因为π是一个无理数,它是无限的.这就意味着任何对π的计算都仅仅是个近似值.如果 ...

  9. Python计算大文件行数方法及性能比较

    如何使用Python快速高效地统计出大文件的总行数, 下面是一些实现方法和性能的比较. 1.readline读所有行 使用readlines方法读取所有行: def readline_count(fi ...

最新文章

  1. 社区资源 | NeurIPS 2020预讲会回放资料(含PPT)
  2. C# Dictionary.Add(key,123) 与 Dictionary[key]=123的区别
  3. J2Cache 中使用 Lettuce 替代 Jedis 管理 Redis 连接
  4. ecshop二次开发必备--数据库说明2
  5. c mysql5.7_CentOS7下MySQL5.7的三种安装方式详解
  6. 计算机丢失winmm.dll,winmm.dll
  7. 装了linux开机出现错误,[已解决]安装完,启动出现错误!
  8. mysql数据库腾讯云添加用户,解决腾讯云cdb的基础版mysql不支持新建账号
  9. dismiss 多个viewController
  10. 【CentOS7】设置静态IP地址
  11. linux物理服务器搬迁后,更换了路由器,ping不同外网
  12. 跟着Vam一起学习Typescript(第一期)
  13. Android RecyclerView优雅实现复杂列表布局(二)
  14. c语言输出星号一行比一行星号少一个,c语言打印空白星号矩形
  15. C#中操作Word(6)—— 如何向Word中插入图片
  16. 马云对话创业者:我不喜欢人工智能,机器应做人类做不到的事
  17. 海事监管新模式 | 智慧舰船三维可视化管理
  18. OCR技术识别文档的技术
  19. “Random“ objects should be reused解决 Random() 低效问题
  20. 如何避免干井校准操作的常见误区?有效执行温度校准

热门文章

  1. 影楼商业级一键修图磨皮插件dr5 下载 免费下载
  2. 鸿鑫汽车配件进销存管理系统总结
  3. 昆明现代科技学校计算机,昆明现代科技学校2021年宿舍条件
  4. QSplitter设置比例
  5. python开发mbus程序_基于MBUS标准协议采集水、热、气表的方法与流程
  6. python挖掘chinaz长尾词脚本代码分享
  7. 正则表达式匹配数字和字母组合,且不能为纯数字或纯字母
  8. 程序设计基础课程设计—模拟图书馆管理系统
  9. 欧路词典可以支持MDict的词典_我是亲民_新浪博客
  10. 花生壳配置内网映射(linux)