matlab - 使用加速度计计算的绘图速度和距离

标签 matlab accelerometer

我在 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 厘米的误差是可以的。

图表说明了一些不同的东西: Acceleration, velocity and distance chart

之后我尝试绘制距离: 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;

图表是:

Acceleration,Velocity,Position chart

再次抱歉。我希望这会帮助某人计算速度和距离。下次在寻求帮助之前,它确实帮助了我更好地研究我的代码。

关于matlab - 使用加速度计计算的绘图速度和距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36157509/

相关文章:

matlab - Matlab 支持函数对象吗?

matlab - 重采样和抗锯齿FIRLS滤波器顺序

algorithm - 找到与特定数字最接近的数字组合

iphone - 在没有 GPS 的情况下跟踪 iPhone 的微小 Action

android - 使用加速度计检测物理​​手势

java - 计算纵跳腾空时间

matlab - Matlab 中的反不完全 Gamma 函数

raspberry-pi - 树莓派上的多个加速计

objective-c - 如何使用 CADisplayLink 在 CMRotationMatrix 上应用过滤器

matlab - 如何推出 Matlab 应用程序供其他人使用?