我在 MATLAB 的物理课上通过在单轴上拖动对象来使用加速度计计算基本距离,但在绘制数据时遇到问题。
我的步骤是:
1) 校准设备以在每个轴上读取零 g 后,我消除了漂移误差:
X_real = X_sample - X_calibrated;
if(X_real <= X_drift )
{
X_real = 0;
}
其中 X_drift 为 2 mg(来自加速度计的数据表)
2) 计算速度:
velocity = 0; % On start
% Integration
v(i) = v(i-1) - x(i-1)-(x(i)+x(i-1)+x(i-2)+x(i-3))/4;
%Check if we stopped
if(x(i-1)==0 && x(i)==0)
v(i)=0;
end
%Check if velocity is under 0 (Not allowed)
if(v(i) < 0)
v(i)=0;
end
velocity = velocity + v(i);
3)计算距离:
distance = 0; % On start
%Integration
s(i) = s(i-1) + v(i-1) + (v(i)-v(i-1)-v(i-2)-v(i-3))/4;
distance = distance + s(i);
通过将加速度计拖到 table 上 20 厘米进行测试后,我得到了这些结果:
velocity = 0.09 m/s
distance = 0.21 m
time = 3.2s
类里面 1 厘米的误差是可以的。
图表说明了一些不同的东西:
之后我尝试绘制距离:
s(i) = s(i)+s(i-1);
并在图表上得到 21 厘米,但在 6 秒后而不是在 4 秒后它应该在的位置。 我做错了什么?
*更新:位置 y 值的单位是毫米而不是厘米!对不起
最佳答案
很抱歉寻求帮助,我认为我的公式没问题,但事实并非如此。经过一步一步的计算,我最终的解决方案是:
1) 速度:
v(i) = v(i-1) - x(i-1)-(x(i)+x(i-1))/2;
2)距离:
s(i) = s(i-1) + v(i-1)+(v(i)+v(i-1))/2;
图表是:
再次抱歉。我希望这会帮助某人计算速度和距离。下次在寻求帮助之前,它确实帮助了我更好地研究我的代码。
关于matlab - 使用加速度计计算的绘图速度和距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36157509/