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 相关文章推荐
Tensorflow的可视化工具Tensorboard的初步使用详解
Feb 11 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
Mar 15 Python
Go/Python/Erlang编程语言对比分析及示例代码
Apr 23 Python
利用Python实现在同一网络中的本地文件共享方法
Jun 04 Python
Django 配置多站点多域名的实现步骤
May 17 Python
Python数据结构与算法(几种排序)小结
Jun 22 Python
在django view中给form传入参数的例子
Jul 19 Python
python3实现mysql导出excel的方法
Jul 31 Python
pytorch 模型可视化的例子
Aug 17 Python
代码总结Python2 和 Python3 字符串的区别
Jan 28 Python
jupyter notebook插入本地图片的实现
Apr 13 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 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
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
php调用KyotoTycoon简单实例
2015/04/02 PHP
php cookie 详解使用实例
2016/11/03 PHP
JavaScript修改css样式style
2008/04/15 Javascript
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
js实现杯子倒水问题自动求解程序
2013/03/25 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
js淡入淡出的图片轮播效果代码分享
2015/08/24 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
Bootstrap modal只加载一次数据的解决办法(推荐)
2017/11/24 Javascript
JsChart组件使用详解
2018/03/04 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
js利用拖放实现添加删除
2020/08/27 Javascript
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
[01:53]3.19 DOTA2发布会 现场精彩Coser表演
2014/03/25 DOTA
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
Python深入学习之装饰器
2014/08/31 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
python命令行工具Click快速掌握
2019/07/04 Python
Python编程学习之如何判断3个数的大小
2019/08/07 Python
利用python实现周期财务统计可视化
2019/08/25 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
2020/02/20 Python
python 插入日期数据到Oracle实例
2020/03/02 Python
Python简单实现词云图代码及步骤解析
2020/06/04 Python
python实现代码审查自动回复消息
2021/02/01 Python
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
政治表现评语
2014/05/04 职场文书
国庆节演讲稿
2014/05/27 职场文书
教你使用Pandas直接核算Excel中快递费用
2021/05/12 Python