簡體   English   中英

R中的速度計算

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM