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字符串str和字节数组相互转化方法
Mar 18 Python
python实现多人聊天室
Mar 31 Python
python 批量添加的button 使用同一点击事件的方法
Jul 17 Python
django 连接数据库 sqlite的例子
Aug 14 Python
基于 Django 的手机管理系统实现过程详解
Aug 16 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
Oct 12 Python
python实现按首字母分类查找功能
Oct 31 Python
Python实现FLV视频拼接功能
Jan 21 Python
tensorflow实现二维平面模拟三维数据教程
Feb 11 Python
Java如何基于wsimport调用wcf接口
Jun 17 Python
Python包和模块的分发详细介绍
Jun 19 Python
keras 多任务多loss实例
Jun 22 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
source.php查看源文件
2006/12/09 PHP
使用 PHPMAILER 发送邮件实例应用
2012/11/07 PHP
Window下PHP三种运行方式图文详解
2013/06/11 PHP
php中define用法实例
2015/07/30 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
php简单复制文件的方法
2016/05/09 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
详解Bootstrap插件
2016/04/25 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
angular之ng-template模板加载
2017/11/09 Javascript
Vue入门之数据绑定(小结)
2018/01/08 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
解决python3 json数据包含中文的读写问题
2018/05/10 Python
Python 字符串与数字输出方法
2018/07/16 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
django中的图片验证码功能
2019/09/18 Python
如何定义TensorFlow输入节点
2020/01/23 Python
tensorflow 查看梯度方式
2020/02/04 Python
Python 实现简单的客户端认证
2020/07/29 Python
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
有趣的广告词
2014/03/18 职场文书
青春无悔演讲稿
2014/05/08 职场文书
全陪导游词
2015/02/04 职场文书
语文教师求职信范文
2015/03/20 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
大学军训通讯稿
2015/07/18 职场文书
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang
MySQL高速缓存启动方法及参数详解(query_cache_size)
2021/07/01 MySQL
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python