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内置数据类型详解
Aug 18 Python
Python实现完整的事务操作示例
Jun 20 Python
Python自定义简单图轴简单实例
Jan 08 Python
python+pyqt5实现24点小游戏
Jan 24 Python
python从子线程中获得返回值的方法
Jan 30 Python
Python 3.8 新功能全解
Jul 25 Python
python遍历文件目录、批量处理同类文件
Aug 31 Python
pandas数据处理进阶详解
Oct 11 Python
创建Shapefile文件并写入数据的例子
Nov 26 Python
浅析python 动态库m.so.1.0错误问题
May 09 Python
基于matplotlib中ion()和ioff()的使用详解
Jun 16 Python
详解selenium + chromedriver 被反爬的解决方法
Oct 28 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 xml文件操作实现代码(二)
2009/03/20 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
js中opener与parent的区别详细解析
2014/01/14 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
2016/06/27 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
关于Jquery中的事件绑定总结
2016/10/26 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
js定义类的方法示例【ES5与ES6】
2019/07/30 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
js 函数性能比较方法
2020/08/24 Javascript
用Python进行基础的函数式编程的教程
2015/03/31 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
对Python+opencv将图片生成视频的实例详解
2019/01/08 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
css sprite简单实例
2016/05/23 HTML / CSS
详解HTML5表单新增属性
2016/12/21 HTML / CSS
Hunkemöller西班牙:欧洲最大的内衣连锁店
2018/08/15 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
任命书模板
2014/06/04 职场文书
质量保证书怎么写
2015/02/27 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js
python实现会员信息管理系统(List)
2022/03/18 Python