坐山雕

导航

Find peaks and valleys in dataset

 

import numpy as np

import matplotlib.pyplot as plt

%matplotlib inline

 

# example data with peaks:

x = np.linspace(-1,3,1000)

data = -0.1*np.cos(12*x)+ np.exp(-(1-x)**2)

 

#     ___ detection of local minimums and maximums ___

 

a = np.diff(np.sign(np.diff(data))).nonzero()[0] + 1               # local min & max

b = (np.diff(np.sign(np.diff(data))) > 0).nonzero()[0] + 1         # local min

c = (np.diff(np.sign(np.diff(data))) < 0).nonzero()[0] + 1         # local max

# +1 due to the fact that diff reduces the original index number

 

# plot

plt.figure(figsize=(12, 5))

plt.plot(x, data, color='grey')

plt.plot(x[b], data[b], "o", label="min", color='r')

plt.plot(x[c], data[c], "o", label="max", color='b')

plt.show()

 

 

 

 


findPeaks(sin(1:10))

 

p <- findPeaks(sin(seq(1,10,.1)))

sin(seq(1,10,.1))[p]

 

plot(sin(seq(1,10,.1))[p])

plot(sin(seq(1,10,.1)),type='l')

points(p,sin(seq(1,10,.1))[p])

 

 

posted on 2021-01-06 10:51  坐山雕  阅读(80)  评论(0)    收藏  举报