gpt4 book ai didi

Android 加速度计分析

转载 作者:IT老高 更新时间:2023-10-28 23:27:01 30 4
gpt4 key购买 nike

我为 Sensor.TYPE_ACCELEROMETER 编写了一个简单的 Activity,它是一个 SensorEventListener

在我的 onSensorChanged(SensorEvent event) 中,我只需选择 X,Y,Z 格式的值并将它们写入文件。

添加到此 X,Y,Z 的是一个标签,该标签特定于我正在执行的 Activity 。所以它的 X,Y,Z,label

像这样我获得了我的 Activity 资料。想对数据收集后执行哪些操作提出建议,以消除噪音并获得 Activity 的最佳数据。

此数据收集的主要目的是使用神经网络库(Android 的 NeuroPh)构建用户 Activity 检测应用程序Link .

最佳答案

几周前我写了一个计步器只是为了好玩,它本来可以检测到你提到的三个 Activity 。我会做以下观察:

  1. 除了 Sensor.TYPE_ACCELEROMETER,Android 还有 Sensor.TYPE_GRAVITYSensor .TYPE_LINEAR_ACCELERATION。如果您记录所有三个的值,那么您会注意到 TYPE_ACCELEROMETER 的值始终等于 TYPE_GRAVITY 和 TYPE_LINEAR_ACCELERATION 的值之和。 onSensorChanged(…) 方法首先为您提供 TYPE_ACCELEROMETER,然后是 TYPE_GRAVITY 和 TYPE_LINEAR_ACCELERATION,这是其将加速度计读数分解为重力和非重力加速度的内部方法的结果。鉴于您对 Activity 产生的加速度感兴趣,而不是重力产生的加速度,您可能会发现 TYPE_LINEAR_ACCELERATION 更适合您的需求。
  2. 无论您使用什么传感器,X、Y、Z您正在测量的将取决于设备的方向。但是,为了检测您提到的 Activity ,结果不能取决于例如无论用户是在纵向还是横向位置拿着设备,或者设备是平的还是垂直的,所以 X、Y 和 Z 的单个值都没有任何用处。相反,您必须查看向量的长度,即与设备方向无关的 sqrt(XX+YY+ZZ)。
  3. 如果你将数据输入对噪声敏感的东西,你只需要平滑数据。相反,我会说数据就是数据,如果你使用对噪声不敏感的机制,你会得到最好的结果,因此不需要对数据进行平滑处理。根据定义,平滑是丢弃数据。您想设计一种算法,在一端接收噪声数据并在另一端输出当前 Activity ,因此不要预先判断是否有必要将平滑作为该算法的一部分
  4. 这是我在构建计步器时记录的 Sensor.TYPE_ACCELEROMETER 的 sqrt(XX+YY+ZZ) 图表。这些图表显示了我步行 100 步时测量的读数。绿线是 sqrt(XX+YY+Z*Z),蓝线是 exponentially weighted moving average绿线给出了绿线的平均水平,红线显示了我的算法计数步骤。我可以通过查找最大值和最小值以及绿线与蓝线交叉的时间来计算步数。我没有使用任何平滑或快速傅立叶变换。根据我的经验,对于这类事情,最简单的算法通常效果最好,因为虽然复杂的算法在某些情况下可能有效,但很难预测它们在所有情况下的表现。稳健性是任何算法的重要特征:-)。

enter image description here

关于Android 加速度计分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16392142/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com