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实现多线程下载文件的代码实例
Jun 01 Python
C#返回当前系统所有可用驱动器符号的方法
Apr 18 Python
Python的Urllib库的基本使用教程
Apr 30 Python
Python 26进制计算实现方法
May 28 Python
python实现读取excel写入mysql的小工具详解
Nov 20 Python
Python机器学习算法之k均值聚类(k-means)
Feb 23 Python
python 在屏幕上逐字显示一行字的实例
Dec 24 Python
使用python实现对元素的长截图功能
Nov 14 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
pyqt5数据库使用详细教程(打包解决方案)
Mar 25 Python
Python把图片转化为pdf代码实例
Jul 28 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
Jun 29 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
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
php session处理的定制
2009/03/16 PHP
利用PHP实现短域名互转
2013/07/05 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
微信小程序 教程之wxapp 视图容器 view
2016/10/19 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
基于JavaScript实现弹幕特效
2020/08/27 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
详解用async/await来处理异步
2019/08/28 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
python文件操作相关知识点总结整理
2016/02/22 Python
基于hashlib模块--加密(详解)
2017/06/21 Python
创建Django项目图文实例详解
2019/06/06 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
详解CSS3 用border写 空心三角箭头 (两种写法)
2017/09/29 HTML / CSS
世界上最大的在线旅行社新加坡网站:Expedia新加坡
2016/08/25 全球购物
服装创业计划书范文
2014/02/05 职场文书
远程培训的心得体会
2014/09/01 职场文书
2016年大学生社会实践心得体会
2015/10/09 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android