[英]Speed Calculation in R
假設我在不同幀有對象的 x 和 y 位置,如何從數據集中計算對象的速度。 這是我正在使用的代碼。
for (i in 1:(nrow(accdata))) {
if (row1$Object == row2$Object) {
d <- integer()
v <- integer()
d <- c(sqrt((row1$midx - row2$midx) ^ 2 + (row1$midy - row2$midy) ^ 2))
v <- d / framerate
}
}
我得到距離和速度的單一值。 我應該得到一個向量,因為數據集有很多行
(row1$midx - row2$midx) * framerate
和(row1$midy - row2$midy) * framerate
您提供速度向量的 x 和 y 分量(請檢查幀速率的維數,因為幀速率通常以 fps ~ 1 / s 為單位) . 請參閱下面的代碼以獲取圓周運動的速度分量和速度本身:
# data simulation
# circular motion
frame_rate <- 60 # in fps
dt <- 1 / frame_rate # in secs
t <- seq(1, (10 * pi), dt)
x <- sin(t) # in meter
y <- cos(t) # in meters
accdata <- data.frame(midx = x, midy = y) # coordinates, in meters
# velocity calculations
dx <- c(NA, diff(accdata$midx))
dy <- c(NA, diff(accdata$midy))
vx <- dx / dt
vy <- dy / dt
v <- sqrt(vx ^ 2 + vy ^ 2)
res <- cbind(accdata, dx, dy, vx, vy, v)
head(res)
輸出:
midx midy dx dy vx vy v
1 0.8414710 0.5403023 NA NA NA NA NA
2 0.8503587 0.5262034 0.008887753 -0.01409891 0.5332652 -0.8459344 0.9999884
3 0.8590103 0.5119583 0.008651548 -0.01424507 0.5190929 -0.8547043 0.9999884
4 0.8674232 0.4975710 0.008412940 -0.01438728 0.5047764 -0.8632367 0.9999884
5 0.8755952 0.4830456 0.008171994 -0.01452549 0.4903197 -0.8715294 0.9999884
6 0.8835240 0.4683859 0.007928779 -0.01465967 0.4757267 -0.8795800 0.9999884
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.