平滑R中的方向(角度)数据

时间:2015-03-27 01:13:25

标签: r rotation motion-detection

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

我想平滑数据集,以便当方向在单个帧中改变~180时,它将被转换以反映实际角度。

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

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

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

大卫

编辑 - 附加图像 enter image description here

1 个答案:

答案 0 :(得分:2)

这是一个有趣的问题需要解决!它需要迭代,因为无论什么时候改变一个值,它都可以解决问题但是创建另一个...让我知道它是否有效。

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