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入门篇之编程习惯与特点
Oct 17 Python
日常整理python执行系统命令的常见方法(全)
Oct 22 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
详解python函数传参是传值还是传引用
Jan 16 Python
python celery分布式任务队列的使用详解
Jul 08 Python
浅谈Python中函数的定义及其调用方法
Jul 19 Python
Django之提交表单与前后端交互的方法
Jul 19 Python
使用Python实现Wake On Lan远程开机功能
Jan 22 Python
Python对Tornado请求与响应的数据处理
Feb 12 Python
Python Json数据文件操作原理解析
May 09 Python
使用Keras画神经网络准确性图教程
Jun 15 Python
用ldap作为django后端用户登录验证的实现
Dec 07 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 日志缩略名的创建函数代码
2010/05/26 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
jquery ui对话框实例代码
2013/05/10 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
基于jQuery ligerUI实现分页样式
2016/09/18 Javascript
javascript self对象使用详解
2016/10/18 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
2017/03/17 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
js+canvas实现验证码功能
2020/09/21 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
2019/11/12 Javascript
Vue之封装公用变量以及实现方式
2020/07/31 Javascript
[02:56]DOTA2上海特锦赛小组赛解说FreeAgain采访花絮
2016/02/27 DOTA
本地文件上传到七牛云服务器示例(七牛云存储)
2014/01/11 Python
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
python hash每次调用结果不同的原因
2019/11/21 Python
python 实现两个线程交替执行
2020/05/02 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
2020/06/24 Python
优秀的计算机专业求职信范文
2013/12/27 职场文书
公务员转正考察材料
2014/02/07 职场文书
《画家乡》教学反思
2014/04/22 职场文书
法定代表人授权委托书
2014/09/19 职场文书
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫
Redis实现短信验证码登录的示例代码
2022/06/14 Redis