r - 在 R 中平滑方向(角度)数据

标签 r rotation motion-detection

我正在尝试处理导出数据之后的一些运动分析软件跟踪错误。对于某些帧,方向从“真实”方向旋转 180 度。

我想平滑数据集,以便当方向在单帧中改变约 180 度时,它会被转换以反射(reflect)实际角度。

有人知道使用 R 语言中的任何循环统计包(例如 CircStats)来解决此问题的方法吗?或者,我可以想象一个脚本,检查帧与帧之间的变化是否接近 180 度,如果是,则减去 180,然后移动到下一帧。这听起来是一个合理的方法吗?它可以在 R 中轻松实现吗?

恐怕我没有代表上传描述问题的图表(很容易看到),但是 here是一个示例数据集。

感谢您的帮助。我一直是堆栈溢出的长期用户,但在需要询问之前从未找不到答案。

大卫

编辑-附加图像 enter image description here

最佳答案

这是一个需要解决的有趣问题!它需要迭代,因为每当一个值发生变化时,它可以解决一个问题,但会创建另一个问题......让我知道它是否有效。

threshold <- 90
correction <- 180

dat <- read.table("angle_data.txt", header=TRUE)
dat <- ts(dat)

repeat {
    diffs <- dat - lag(dat, k = 1)
    probl <- which(abs(diffs[,2]) > threshold)

    if(length(probl)==0)
        break

    obs.1 <- dat[probl[1], 2]
    obs.2 <- dat[probl[1] + 1, 2]

    dat[probl[1] + 1, 2] <- obs.2 + sign(obs.1 - obs.2) * 180
}

enter image description here

关于r - 在 R 中平滑方向(角度)数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29291706/

相关文章:

r - 合并/加入优先考虑非缺失值

r - 从 for 循环内的列表列表中删除元素

r - 如何获取r中病例和对照的具体分组

Swift:UILabel 的动画旋转

Android 陀螺仪与加速度计

iphone - 检测用户的旋转运动

r - 确定哪些 R 包和依赖项使用 DLL 文件

ios - 在倒置肖像模式下关闭 VC 后,主 VC 显示为正常肖像

android - Android 中的 setRotationY() 宽度 API10

android - 运动检测与节省电池