Verwenden Sie scipy.signal.argrelmax Sie können den Index des Spitzenwerts erhalten.
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
#Index des Spitzenwerts abrufen
maxid = signal.argrelmax(y, order=1) #Maximalwert
minid = signal.argrelmin(y, order=1) #Mindestwert
plt.plot(x,yorg,'r',label='Erbsünde')
plt.plot(x,y,'k-',label='Originalserie')
plt.plot(x[maxid],y[maxid],'ro',label='Höchstwert')
plt.plot(x[minid],y[minid],'bo',label='Spitzenwert (Minimum)')
plt.legend()
Durch Ändern des Auftragswerts wird das Extraktionsintervall geändert.
Recommended Posts