python如何确定拐点_python – 在样条拟合1d数据中找到拐点
我有一些一維數(shù)據(jù),并與樣條擬合.然后我想在其中找到拐點(diǎn)(忽略鞍點(diǎn)).現(xiàn)在我通過(guò)在splev生成的很多值上使用scipy.signal.argrelmin(和argrelmax)來(lái)搜索其第一個(gè)派生的極值.
import scipy.interpolate
import scipy.optimize
import scipy.signal
import numpy as np
import matplotlib.pyplot as plt
import operator
y = [-1, 5, 6, 4, 2, 5, 8, 5, 1]
x = np.arange(0, len(y))
tck = scipy.interpolate.splrep(x, y, s=0)
print 'roots', scipy.interpolate.sproot(tck)
# output:
# [0.11381478]
xnew = np.arange(0, len(y), 0.01)
ynew = scipy.interpolate.splev(xnew, tck, der=0)
ynew_deriv = scipy.interpolate.splev(xnew, tck, der=1)
min_idxs = scipy.signal.argrelmin(ynew_deriv)
max_idxs = scipy.signal.argrelmax(ynew_deriv)
mins = zip(xnew[min_idxs].tolist(), ynew_deriv[min_idxs].tolist())
maxs = zip(xnew[max_idxs].tolist(), ynew_deriv[max_idxs].tolist())
inflection_points = sorted(mins + maxs, key=operator.itemgetter(0))
print 'inflection_points', inflection_points
# output:
# [(3.13, -2.9822449358974357),
# (5.03, 4.3817785256410255)
# (7.13, -4.867132628205128)]
plt.legend(['data','Cubic Spline', '1st deriv'])
plt.plot(x, y, 'o',
xnew, ynew, '-',
xnew, ynew_deriv, '-')
plt.show()
但這感覺非常錯(cuò)誤.我想有可能在沒(méi)有產(chǎn)生這么多價(jià)值的情況下找到我要找的東西.像sproot這樣的東西,但也許適用于二次推導(dǎo)?
總結(jié)
以上是生活随笔為你收集整理的python如何确定拐点_python – 在样条拟合1d数据中找到拐点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql是小型数据库_mysql小型数
- 下一篇: java none怎么用tomcat_J