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中的变量的数据类型
May 13 Python
Python递归函数定义与用法示例
Jun 02 Python
python: 自动安装缺失库文件的方法
Oct 22 Python
python对象与json相互转换的方法
May 07 Python
python 梯度法求解函数极值的实例
Jul 10 Python
通过python实现弹窗广告拦截过程详解
Jul 10 Python
python切片(获取一个子列表(数组))详解
Aug 09 Python
python利用JMeter测试Tornado的多线程
Jan 12 Python
深入浅析Python 函数注解与匿名函数
Feb 24 Python
Python3操作读写CSV文件使用包过程解析
Apr 10 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
May 09 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
Dec 14 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
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
php代码审计比较有意思的例子
2014/05/07 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
浅谈Javascript嵌套函数及闭包
2010/11/09 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
2013/05/17 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
node.js入门教程
2014/06/01 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
Vue结合SignalR实现前后端实时消息同步
2017/09/19 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
2018/07/17 Javascript
Python学习之asyncore模块用法实例教程
2014/09/29 Python
python操作CouchDB的方法
2014/10/08 Python
Python装饰器基础详解
2016/03/09 Python
简单谈谈python中的语句和语法
2017/08/10 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
python opencv实现证件照换底功能
2019/08/19 Python
使用Python 自动生成 Word 文档的教程
2020/02/13 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
简单的Python人脸识别系统
2020/07/14 Python
python中@contextmanager实例用法
2021/02/07 Python
h5实现获取用户地理定位的实例代码
2017/07/17 HTML / CSS
店面销售职位的职责
2014/03/09 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
家装电话营销开场白
2015/05/29 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android