python计算波峰波谷值的方法(极值点)


Posted in Python onFebruary 18, 2020

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

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

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()

得到的图形是:

python计算波峰波谷值的方法(极值点)

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

# 极值
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()

python计算波峰波谷值的方法(极值点)

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

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

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

python计算波峰波谷值的方法(极值点)

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

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计算波峰波谷值的方法(极值点),希望对大家有所帮助,也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python里将list中元素依次向前移动一位
Sep 12 Python
利用Python画ROC曲线和AUC值计算
Sep 19 Python
Python用UUID库生成唯一ID的方法示例
Dec 15 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
Jun 09 Python
NetworkX之Prim算法(实例讲解)
Dec 22 Python
解决python爬虫中有中文的url问题
May 11 Python
10 分钟快速入门 Python3的教程
Jan 29 Python
Python 实现数据结构-循环队列的操作方法
Jul 17 Python
python Gunicorn服务器使用方法详解
Jul 22 Python
详解python中的index函数用法
Aug 06 Python
Python datetime 格式化 明天,昨天实例
Mar 02 Python
基于Python实现流星雨效果的绘制
Mar 18 Python
Python表达式的优先级详解
Feb 18 #Python
使用Tkinter制作信息提示框
Feb 18 #Python
Python中import导入不同目录的模块方法详解
Feb 18 #Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 #Python
将pytorch转成longtensor的简单方法
Feb 18 #Python
python实现查找所有程序的安装信息
Feb 18 #Python
Python3中configparser模块读写ini文件并解析配置的用法详解
Feb 18 #Python
You might like
php不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
php模拟登陆的实现方法分析
2015/01/09 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
一个挺有意思的Javascript小问题说明
2011/09/26 Javascript
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
Javascript中的delete操作符详细介绍
2014/06/06 Javascript
JavaScript实现生成GUID(全局统一标识符)
2014/09/05 Javascript
jQuery简单实现验证邮箱格式
2015/07/15 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
python paramiko模块学习分享
2017/08/23 Python
在Python中如何传递任意数量的实参的示例代码
2019/03/21 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
Python如何基于selenium实现自动登录博客园
2019/12/16 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
大学生入党自我鉴定
2013/10/31 职场文书
机电专业个人求职信范文
2013/12/30 职场文书
法人授权委托书范本
2014/09/17 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
2015年师德师风承诺书
2015/01/22 职场文书
技术支持岗位职责
2015/02/13 职场文书
幼儿园亲子活动通知
2015/04/24 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
婚宴父母致辞
2015/07/27 职场文书
Python图像处理之图像拼接
2021/04/28 Python
解决Python字典查找报Keyerror的问题
2021/05/26 Python
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电