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多线程threading.Lock锁用法实例
Nov 01 Python
详谈Python高阶函数与函数装饰器(推荐)
Sep 30 Python
基于python实现在excel中读取与生成随机数写入excel中
Jan 04 Python
Pytorch入门之mnist分类实例
Apr 14 Python
python方法生成txt标签文件的实例代码
May 10 Python
详解Python下载图片并保存本地的两种方式
May 15 Python
python实现超市商品销售管理系统
Oct 25 Python
Python读取YAML文件过程详解
Dec 30 Python
python中get和post有什么区别
Jun 19 Python
Python生成器generator原理及用法解析
Jul 20 Python
python代码能做成软件吗
Jul 24 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
Sep 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
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
thinkphp连贯操作实例分析
2014/11/22 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
一些不错的js函数ajax
2008/08/20 Javascript
Ext对基本类型的扩展 ext,extjs,format
2010/12/25 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
2016/01/23 Javascript
AngularJS实用开发技巧(推荐)
2016/07/13 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
python利用lxml读写xml格式的文件
2017/08/10 Python
浅谈Python中的私有变量
2018/02/28 Python
Jupyter中直接显示Matplotlib的图形方法
2018/05/24 Python
python开发游戏的前期准备
2019/05/05 Python
Python文件操作函数用法实例详解
2019/12/24 Python
Python中itertools的用法详解
2020/02/07 Python
python和php哪个更适合写爬虫
2020/06/22 Python
如何用Python进行时间序列分解和预测
2021/03/01 Python
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
俄罗斯领先的移动和数字设备在线商店:Svyaznoy.ru
2020/12/21 全球购物
餐厅销售主管职责范本
2014/02/19 职场文书
剪彩仪式主持词
2014/03/19 职场文书
霸气队列口号
2014/06/18 职场文书
青年标兵事迹材料
2014/08/16 职场文书
小学校长汇报材料
2014/08/20 职场文书
专题民主生活会对照检查材料思想汇报
2014/09/29 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
56句经典英文座右铭
2019/08/09 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android