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 Django批量导入不重复数据
Mar 25 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
Sep 30 Python
python线程池threadpool实现篇
Apr 27 Python
python 信息同时输出到控制台与文件的实例讲解
May 11 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
Dec 19 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
Jun 24 Python
Python如何调用外部系统命令
Aug 07 Python
python opencv将表格图片按照表格框线分割和识别
Oct 30 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
Oct 29 Python
Python离线安装各种库及pip的方法
Nov 28 Python
python利用proxybroker构建爬虫免费IP代理池的实现
Feb 21 Python
Python必备技巧之字符数据操作详解
Mar 23 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防注入安全代码
2008/04/09 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
探究Laravel使用env函数读取环境变量为null的问题
2016/12/06 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
JavaScript 盒模型 尺寸深入理解
2012/12/31 Javascript
js验证IP及子网掩码的合法性有效性示例
2014/04/30 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
2014/08/22 Javascript
jQuery自定义组件(导入组件)
2016/11/08 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
2020/06/05 Javascript
Python实现类继承实例
2014/07/04 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
python面向对象法实现图书管理系统
2019/04/19 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
小学中秋节活动方案
2014/02/06 职场文书
奥巴马的演讲稿
2014/05/15 职场文书
出租房屋协议书
2014/09/14 职场文书
工程催款通知书
2015/04/17 职场文书
学校计划生育责任书
2015/05/09 职场文书
养成教育主题班会
2015/08/13 职场文书
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python
一文带你探究MySQL中的NULL
2021/11/11 MySQL