matlab - 加速度测量中的重力
问题描述
我从一个数据集中获取了加速度计检测到的活动(例如步行、跑步)的 x 和 z 值。由于收集的数据还包含重力值,我在 Matlab 中使用以下过滤器将其删除:
fc = 0.3;
fs = 50;
x = ...;
y = ...;
z = ...;
[but,att] = butter(6,fc/(fs/2));
gx = filter(but,att,x);
gy = filter(but,att,y);
gz = filter(but,att,z);
new_x = x-gx;
new_y = y-gy;
new_z = z-gz;
A = magnitude(new_x,new_y,new_z);
plot(A)
然后我计算了幅度值并在图表上绘制了幅度值。
然而,每张图,即使在去除重力之后,也是以 1g (9.8 m / s ^ 2) 的大小开始的,为什么?既然我移除了重力,它不应该从 0 开始吗?
解决方案
您需要等待过滤器值上升。为此目的,在文件开头包含一些您没有绘制的附加数据。
您的计算需要多准确?随着步行和跑步,加速度计的角度会发生变化,因此重力矢量的方向会在整个步态周期中发生变化。您可以期望看到多少方向变化取决于传感器位置和您尝试捕捉的特定运动。
推荐阅读
- laravel - 如何在共享虚拟主机中部署 laravel 项目?
- javascript - 如何在 Firefox for Android 上为视频创建缩略图
- node.js - 为什么我的 Mongoose 模型在传递集合名称后仍返回空白响应?
- c++ - C++ Linked List Implementation accessing data
- html - Postion: absolute;
- html - Font awesome icon is moving outside of its parent container with position:absolute
- bash - 在openjdk apline docker容器中找不到garmin connectciq-sdk ommand monkeyc
- tensorflow - 如何解决保存和恢复 Keras LSTM 模型错误
- html - webpack4 不编译所有 html 文件?
- mysql - 将 csv 文件导入到 mySQL,而不在 sql 脚本中指定列名