android程序如何滤波,Android低通滤波器和高通滤波器
如果您查看文档,您将看到SensorEvent返回一个表示所有力的向量的数组.http://developer.android.com/reference/android/hardware/SensorEvent.html#values这是加速分量如何分解成每个轴:values[0] //acceleration on x axisvalues[1] //acceleration on y axi
如果您查看文档,您将看到SensorEvent返回一个表示所有力的向量的数组.
http://developer.android.com/reference/android/hardware/SensorEvent.html#values
这是加速分量如何分解成每个轴:
values[0] //acceleration on x axis
values[1] //acceleration on y axis
values[2] //acceleration on z axis
您需要找到重力在哪个方向上运行,然后将其分解成其组成部分.重力的大小总是为9.8,但是方向,从而如何分解成零件,将会发生变化.假设我们可以获得重力的值并将该矢量存储在像重力的阵列中[3]:
gravity[0] //gravity x axis
gravity[1] //gravity y axis
gravity[2] //gravity z axis
手机上的总加速度T为T = g a.要得到一个我们需要一个= T – g:
linear_acceleration[0] = event.values[0] - gravity[0];
linear_acceleration[1] = event.values[1] - gravity[1];
linear_acceleration[2] = event.values[2] - gravity[2];
请注意,由于它是向量操作,它如何逐个元素地逐项计算.
棘手的部分是发现重力,因为在手机中只有一个加速度计同时测量重力和其他力.我们有两个不同的力量,我们想从一个传感器找到.如果我们只能在一个孤立的时间点看待力量,我们将无法提取信息.但是,我们可以在一段时间内获取样本,并且通过查看力量如何随着时间的推移而改变,我们可以提取信息.
这意味着我们需要根据这些力量变化的速度来筛选来自该源的结果.重力加速度的大小不会很快改变,因为它根本没有改变.重力是一个恒定的力量.但其他力量会随着时间的推移而改变.如果我们通过使用高通滤波器来滤除像重力那样的缓慢变化的力,剩余的力就是像施加到手机上的力那样快速变化的力.这就是为什么使用高通滤波器.
更多推荐
所有评论(0)