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中序列的修改、散列与切片详解
Aug 27 Python
Python常见工厂函数用法示例
Mar 21 Python
对python中array.sum(axis=?)的用法介绍
Jun 28 Python
python3 爬取图片的实例代码
Nov 06 Python
pytorch 共享参数的示例
Aug 17 Python
python爬虫 urllib模块url编码处理详解
Aug 20 Python
Python3 合并二叉树的实现
Sep 30 Python
用Python画小女孩放风筝的示例
Nov 23 Python
Python函数基本使用原理详解
Mar 19 Python
Django import export实现数据库导入导出方式
Apr 03 Python
深入分析python 排序
Aug 24 Python
Python实现壁纸下载与轮换
Oct 19 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
建立动态的WML站点(二)
2006/10/09 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
2014/08/20 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
php组合排序简单实现方法
2016/10/15 PHP
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
JS无限树状列表实现代码
2011/01/11 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
javascript中的return和闭包函数浅析
2014/06/06 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
2016/09/08 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
React中的refs的使用教程
2018/02/13 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
2018/08/25 Javascript
Vue时间轴 vue-light-timeline的用法说明
2020/10/29 Javascript
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
Python实现模拟登录及表单提交的方法
2015/07/25 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
深入理解python中的select模块
2017/04/23 Python
Python3之简单搭建自带服务器的实例讲解
2018/06/04 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
Django模板语言 Tags使用详解
2019/09/09 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
详解用Python爬虫获取百度企业信用中企业基本信息
2020/07/02 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
Python列表的深复制和浅复制示例详解
2021/02/12 Python
Python与C/C++的相互调用案例
2021/03/04 Python
什么是Web Service?
2012/07/25 面试题
经典导游欢迎词
2015/01/26 职场文书
大学学生个人总结
2015/02/15 职场文书
你真的了解redis为什么要提供pipeline功能
2021/06/22 Redis
使用Python拟合函数曲线
2022/04/14 Python