我有一个来自手机加速度计的数据样本(虽然加速度计很糟糕)。我正在尝试对其进行双重积分,以获得作为时间函数的位置。我正在使用 Python3 中的程序来集成它,代码如下:
nm = input("Filename: ")
fil1 = open(nm,"r")
i = 0
s = 0.0
fil2 = open("int1.dat","w")
for line in fil1:
xi,yi = line.split()
if i == 0:
x = float(xi) ; y = float(yi)
if i > 0:
s = s + (float(xi)-x)*(float(yi)+y)/2
x = float(xi)
y = float(yi)
i = i + 1
fil2.write("{} {} \n".format(xi,s))
fil2.close()
#I just integrated the file. Now, i will integrate it again:
fil3 = open("int1.dat","r")
s = 0.0
i = 0
fil4 = open("int2.dat","w")
for line in fil3:
xi,yi = line.split()
if i == 0:
x = float(xi) ; y = float(yi)
if i > 0:
s = s + (float(xi)-x)*(float(yi)+y)/2
x = float(xi)
y = float(yi)
i = i + 1
fil4.write("{} {} \n".format(xi,s))
fil3.close()
fil4.close()
如您所见,我正在使用梯形近似该区域。
在运动中获得的加速度数据如下:
- 从我定义为的位置开始.
- 直线移动到桌子的尽头,停了下来。
- 等了几秒。
- 回到原来的位置
因此,位置 x 时间的图表应该类似于“山”:它上升,而不是下降。这是价值在峰值处将代表表格的总长度。
但是,事情并不顺利。我通过消除所有的平均值来消除噪音. 但是,它仍然没有很好地总结。图表变得非常糟糕。所以,这是我的第一个问题: 当我整合它时,噪音太大了。 所以,我的第一个问题是:我怎样才能减少噪音?
正在发生的另一个问题,我觉得奇怪的是,我的位置并没有“去然后回来”到它开始的地方。它开始于, 去(大约是桌子的长度)然后,而不是回到,它一直下降到. 为什么是这样?我似乎找不到任何特别的理由让积分没有认识到我正在倒退的事实。
我试图上传图形,但我现在不能。我会尽快上传它们。非常感谢。