2013-02-24 51 views

回答

2

你試過scipy.stats.linregress

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) 
+0

這看起來像它會工作。在文檔中它說'估算的標準誤差'。這是否意味着梯度或截距的標準誤差? – user1696811 2013-02-24 23:34:46

+0

對不起,亂碼我的結局。這是整個擬合的標準誤差,所以兩者的誤差('位移=梯度*時間+截距')作爲位移是兩者的函數。 – danodonovan 2013-02-24 23:48:12

0

您的時間值等距放置嗎?如果是的話,你可以簡單地用

velocitiy_between = (displacement[1:]-displacement[:-1])/(time[1:]-time[:-1]) 

插值速度這些速度現在定義不上,但在你的數據點之間。然後,您可以通過

velocity = (velocity_between[1:]+velocity_between[:-1])/2.0 

分配給它的平均剩下的每個數據點和右逼近這一點,你獲得速度的數組,你可以比較你適合的成果在內的所有數據點。

如果您的時間值沒有等距離放置,您仍然可以使用此方法。但是,您必須根據數據密度爲錯誤分配額外的權重因子,以考慮附近點之間的斜率更接近的事實。此外,鄰居之間的平均值取決於到鄰居的距離。

如果您需要關於第二種情況的更多詳細信息,請留下評論。