【发布时间】:2017-07-23 16:10:48
【问题描述】:
我有一组数据,y是角度方向,x是y每个点的时间戳。
整个数据集有许多用于角度方向的片段。为了进行曲线拟合,我将数据拆分为各自的段,将每个段存储为一个 numpy 数组。
然后,我使用 numpy.polyfit 找到多项式拟合,以找到每个数据段的曲线拟合。但是因为我的数据纯粹是实验性的,所以我不知道 numpy.polyfit 使用哪个多项式次数,因此我遍历一系列多项式次数,直到找到可能的最高多项式次数。
这是我的代码:
# Experimental data stored in lists: time_aralist and orienrad_aralist
# List stores the segments as arrays
fig = plt.figure()
# Finding curve fit
fittime_aralist, fitorienrad_aralist, fitorienrad_funclist = [], [], []
for j in range(len(time_aralist)):
z, res, _, _, _ = np.polyfit(time_aralist[j], orienrad_aralist[j], 200, full=True)
orienrad_func = np.poly1d(z)
fittime_ara = np.linspace(time_aralist[j][0], time_aralist[j][-1], 10000)
fitorienrad_ara = orienrad_func(fittime_ara)
# Appending to list
fittime_aralist.append(fittime_ara)
fitorienrad_aralist.append(fitorienrad_ara)
fitorienrad_funclist.append(orienrad_func)
# Plotting experimental data
for j in range(len(time_aralist)):
plt.plot(time_aralist[j], orienrad_aralist[j], 'ro')
for j in range(len(fittime_aralist)):
plt.plot(fittime_aralist[j], fitorienrad_aralist, 'k-')
这就是我的情节的样子。图中的中心是一段。
如图所示,黑色曲线拟合线并不能很好地拟合数据点。我感兴趣的区域是该段的中间区域,尽管使用了可能的最高多项式次数,但该区域的拟合效果不佳。
谁能为我提供任何补充技术,或者可以更好地拟合数据的替代代码?
【问题讨论】:
-
问题是,你有适合数据的模型吗?或者你只是想通过这些点产生一条漂亮的线? IE。你需要一个fit吗?如果是这样,则需要知道要考虑哪些可能的拟合函数。如果不是,则根本不应该使用配件。
-
我需要曲线拟合,因为我对数据的一阶导数感兴趣。我不知道要拟合的模型。
-
我的意思是,如果你没有模型,就没有什么可以适应的。这里唯一的目标是密集的一阶导数吗?
-
是的,这是主要目标。
标签: python numpy matplotlib