【发布时间】:2013-02-24 23:06:01
【问题描述】:
我目前将线性函数拟合到距离与时间的关系图上,以便计算出粒子的速度...
velocity, intercept = numpy.polyfit(time, displacement, 1)
然后我怎样才能找到该速度测量中的误差估计值?
【问题讨论】:
标签: python numpy matplotlib curve-fitting
我目前将线性函数拟合到距离与时间的关系图上,以便计算出粒子的速度...
velocity, intercept = numpy.polyfit(time, displacement, 1)
然后我怎样才能找到该速度测量中的误差估计值?
【问题讨论】:
标签: python numpy matplotlib curve-fitting
from scipy import stats
import numpy as np
coefficients = numpy.polyfit(time, displacement, 1)
fitted_data = np.poly1d(coefficients)
slope, intercept, r_value, p_value, std_err = stats.linregress(fitted_data, displacement)
【讨论】:
displacement = gradient * time + intercept) 作为位移的误差是两者的函数。
您的时间值是否等距放置?如果是,你可以简单地通过
插值速度velocitiy_between = (displacement[1:]-displacement[:-1])/(time[1:]-time[:-1])
这些速度现在不是在数据点上定义,而是在数据点之间定义。然后,您可以为每个数据点分配其左右近似的平均值
velocity = (velocity_between[1:]+velocity_between[:-1])/2.0
通过这种方式,您可以获得所有内部数据点的速度数组,您可以将其与拟合结果进行比较。
如果您的时间值不是等距放置的,您仍然可以使用这种方法。但是您必须根据数据密度为您的错误分配额外的加权因子,以考虑到附近点之间的斜率可以更好地近似这一事实。邻居之间的平均也取决于到邻居的距离。
如果您需要关于第二种情况的更多详细信息,请发表评论。
【讨论】: