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 相关文章推荐
Zabbix实现微信报警功能
Oct 09 Python
Python中关于Sequence切片的下标问题详解
Jun 15 Python
面向初学者的Python编辑器Mu
Oct 08 Python
使用EduBlock轻松学习Python编程
Oct 08 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
Python获取Redis所有Key以及内容的方法
Feb 19 Python
PYTHON EVAL的用法及注意事项解析
Sep 06 Python
Python使用turtle库绘制小猪佩奇(实例代码)
Jan 16 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
Mar 10 Python
基于PyQT实现区分左键双击和单击
May 19 Python
Python根据字典的值查询出对应的键的方法
Sep 30 Python
Matplotlib绘制混淆矩阵的实现
May 27 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调用dll的实例操作动画与代码分享
2012/08/14 PHP
深入PHP curl参数的详解
2013/06/17 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
php parse_str() 函数的定义和用法
2016/05/23 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
2021/03/04 PHP
jQuery提交表单ajax查询实例代码
2012/10/07 Javascript
jquery实现的网页自动播放声音
2014/04/30 Javascript
javascript的函数作用域
2014/11/12 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
Nodejs之TCP服务端与客户端聊天程序详解
2017/07/07 NodeJs
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
js利用拖放实现添加删除
2020/08/27 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
python encode和decode的妙用
2009/09/02 Python
Python深入学习之闭包
2014/08/31 Python
Python中的super用法详解
2015/05/28 Python
Python实现的计数排序算法示例
2017/11/29 Python
Python WSGI的深入理解
2018/08/01 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
python爬虫要用到的库总结
2020/07/28 Python
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
“向国旗敬礼”主题班会活动设计方案
2014/09/27 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
2016年情人节问候语
2015/11/11 职场文书
详解CSS开发过程中的20个快速提升技巧
2021/05/21 HTML / CSS
Python Django ORM连表正反操作技巧
2021/06/13 Python