我正在使用加速计进行基本距离计算,通过在MATLAB中将物体沿单轴拖动来进行物理课程的学习,并且在绘制数据时遇到了问题。
我的步骤如下:
1)在对设备进行零重力校准后,消除漂移误差:
X_real = X_sample - X_calibrated;
if(X_real <= X_drift )
{
X_real = 0;
}
X_drift为2毫克(来自加速度计数据表)
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);
在将加速度计拖放在桌子上20厘米测试后,我得到了以下结果:
velocity = 0.09 m/s
distance = 0.21 m
time = 3.2s
教室里1厘米的误差是可以接受的。
图表显示了不同的结果:
我试着在此之后绘制距离:
s(i) = s(i)+s(i-1);
在图表上得到了21厘米,但不是在应该是4秒而是6秒之后。 我哪里做错了吗?
*更新:位置y值为毫米而非厘米!抱歉