2011-07-20 66 views
1

我需要使用R積分加速度曲線(即在短時間段內連續的一系列加速度,例如每0.004秒),並且正在努力弄清楚如何去做。我知道如何使用辛普森規則計算給定兩點的曲線下的面積,但我需要爲大量數據做一些處理,以便得到與每個時間間隔相對應的速度值。所以基本上我有兩列(時間和加速度),需要計算第三個「速度」列中的值。任何意見如何編碼這將不勝感激。在R中積分加速度曲線

回答

1

儘量保持加速的合計運行時間×。換句話說,每一對(加速度,時間)值都會告訴您在該持續時間內發生的加速度量,這反過來會告訴您在該時間段內速度的變化量。添加所有更改以達到總體速度。

所以,你可以寫

v[i+1] = v[i] + (a[i] * t[i]) 

其中:

i =第i個間隔
a[i] =該區間
t[i]在加速=間隔時間(也許是永遠0.004秒)
v[i] =間隔結束時的速度

祝你好運!

2

如果使用梯形公式,然後

v[i+1] = v[i] + (t[i+1] - t[i])*(a[i+1] + a[i])/2 

假設你data.frame是X的列T,A,和v。我想你的第一行t = 0和A = 0。這樣做的一種方法是

lena <- dim(X)[1] -1; 
X$v[1] <- 0; # I assume that initial velocity is zero. 
for (i in 1:lena) { 
    X$v[i+1] <- X$v[i] + (X$t[i+1] - X$t[i])*(X$a[i+1] + X$a[i])/2; 
} 
3

因爲所有的時間間隔都是相同的,所以可以大大簡化。假設你有一個加速度矢量,加速度和一個時間矢量ta。如果你想使用梯形規則,你可以添加cumsum(diff(a)) 1/2(命名選擇,以避免t功能。)

vel <- cumsum(a)/ (ta-ta[1]) # there are no 0 vector indices in R. 

+0

感謝大家,這非常有幫助! – Simon

+0

@Simon:如果你在這個遊樂場不「按規定玩耍」,你的問題最終會得到越來越少的關注。我懷疑Adam Liss是否特別渴望得到更多的分數,但至少你應該加註學徒隊列。 –