我需要对来自加速度计的信号进行积分,以便获得随时间变化的速度和位置。
我正在尝试对一些代码生成的加速度数据进行编码: 1)方波 2)锯齿 3)sin
获得的速度函数可以,问题在于获得积分速度的位置函数。在每种情况下(方波,锯齿形,正弦波),双重离散积分函数都显示一个线性项,该线性项与预期的振荡项重叠。
我已经用diffinv()
函数和这个自定义函数编写了这种离散积分:
#function that, given a function sampled at some time values, calculates its primitive
calculatePrimitive<-function(f_t, time, initialValue){
F_t<-0
F_t[1]<-initialValue
for (i in 2:length(f_t)) {
F_t[i] <- F_t[i-1] + (( (f_t[i]+f_t[i-1])/2 )*(time[i]-time[i-1]) )
}
F_t
}
无论我使用哪种功能执行离散积分,结果都是相同的,如案例1)到3)所示,显示在附图中。
我不明白为什么无论加速度数据是什么,将离散积分应用于通过离散积分本身获得的数据时,为什么会发生这种情况。