Utilisez scipy.signal.argrelmax Vous pouvez obtenir l'index de la valeur de crête.
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
x = np.linspace(0,10,100)
yorg = np.sin(x)
y = yorg + np.random.randn(100)*0.2
#Obtenir l'indice de la valeur de pointe
maxid = signal.argrelmax(y, order=1) #Valeur maximum
minid = signal.argrelmin(y, order=1) #valeur minimum
plt.plot(x,yorg,'r',label='Péché originel')
plt.plot(x,y,'k-',label='Série originale')
plt.plot(x[maxid],y[maxid],'ro',label='Valeur crête')
plt.plot(x[minid],y[minid],'bo',label='Valeur de crête (minimum)')
plt.legend()
La modification de la valeur de la commande modifie l'intervalle d'extraction.
Recommended Posts