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()
得到的图形是:
2. 求波峰值,也就是极大值,得到:signal.find_peaks
# 极值
num_peak_3 = signal.fin