如何使用手机的加速度传感器计算振动频率(Hz或G或等效值)?

时间:2019-01-18 09:36:53

标签: java android react-native kotlin android-sensors

我正在开发一个android移动应用。我想使用提供m / s ^ 2三轴输出(x,y,z)的加速度计传感器来计算振动频率。 样品: x:9.89403849 y:5.99348859 z:10.9458495

它是一个React Native应用,我使用库https://react-native-sensors.github.io/docs/Usage.html来访问传感器的输出。

constructor() {
  super();

  this.state = {
    value: null
  }

  setUpdateIntervalForType(SensorTypes.accelerometer, 1000);
}

componentWillMount() {
 const subscription = accelerometer.subscribe(({ x, y, z, timestamp }) =>
    this.setState({
      value: z
   })
 );
}

是否可以使用上述移动式加速度传感器的输出来计算振动频率?

1 个答案:

答案 0 :(得分:1)

您需要收集一个示例性的加速数据时间序列,然后应用Fourier transform将数据分解为组成频率分量,前提是完全没有明显的信号。有几件事情要考虑:

  • 数据的时间分辨率至少应比预期频率小
  • 样本的总长度至少应为预期频率的几倍
  • 如果没有清晰的信号(电话在静止不动,等等),仍然会有计算结果,但是您需要采取一定的置信度措施,以将结果丢弃到任意置信度阈值以下。
  • 加速度数据提供了三个空间轴,但您只需要一个结果数?然后,您需要考虑如何根据计算可能产生的三个独立频率来定义该数字。