在Python-實時數據數值積分(梯形)質詢數值積分(梯形)上在Python
背景實時數據:在實時我測量移動物體,其具有100的平均速米/分鐘,而且我每60毫秒採樣100毫秒 - 因此在一分鐘結束時,我將有600個採樣。我的測量方法不準確,每次測量的偏差爲10米。一分鐘間隔後的典型圖形是:
問:我知道大致的對象行進100米一分鐘,但是這個時期時,綜合以上(只使用梯形現在)一個我得到答案比預期的多60倍,我做錯了什麼?我懷疑這是'寬度'或deltaT = 100ms這是不正確的(?)
我的python代碼如下 - 這是慣用的,即不pythonic,由於某種原因;以模擬實時測量:
# Trapezoidal rule integral
testData = [] # store all vel. measurements
width = 100e-3 # sample every 100ms
total = 0
currVel = 0
prevVel = 0
t = 0
while(t < 60):
# take a live sample and save it
currVel = np.random.normal(100,10,1)
testData.append(currVel)
# only complete the integral after the second sample
if(t >= 100e-3):
total += width*(currVel+prevVel)/2
# update previous flow and increment
prevVel = currVel
t += 100e-3
#total /= 60 # fudge factor, why this factor out?
print "Total distance covered over 1 minute", total
這裏沒有理由使用梯形。如果你仔細想想,你一次增加一半的新樣本,然後下一個循環,當樣本變成prevVel時,你將增加另一半。總數的最終值只是所有樣本的總和,但端點除外。 – DarenW
非常感謝DarenW的迴應,但是這並沒有回答我的問題:除非我錯過了什麼,否則爲什麼它會以60的因子出來? –
你有單位問題。您的樣本分佈爲m/min,請嘗試將其改爲1.67 m/s。您的循環測量時間超過60秒,而不是60分鐘。那你在做什麼?跟蹤雷達人? –