首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android低通滤波器和高通滤波器

Android低通滤波器和高通滤波器
EN

Stack Overflow用户
提问于 2014-06-09 19:49:39
回答 4查看 27.4K关注 0票数 23

我有一个非常基本的问题。什么是Android加速度计的低通滤波器和高通滤波器?

当我看到加速度传感器的输出时,我会查看是否没有使用任何过滤器(例如:我将手机空闲在桌子上),我得到的是z轴+ve值。现在,如果我考虑使用基础物理,它给出了精确的值(9.8Approx),小g,即由于重力引起的加速度。

为了得到线性加速度,如果我给手机添加任何力,它会改变加速度计的值,但它将是我应用的g + a。所以要得到a,为什么不能直接从加速度计得到的值中减去呢?

这有什么用呢?

我对低通的基本定义是:允许低值,高通:允许高值。

EN

回答 4

Stack Overflow用户

发布于 2014-06-09 20:31:56

如果您查看文档,您将看到SensorEvent返回了一个数组,该数组表示所有力的向量。http://developer.android.com/reference/android/hardware/SensorEvent.html#values这是加速度分量分解为每个轴的方式:

代码语言:javascript
复制
 values[0] //acceleration on x axis
 values[1] //acceleration on y axis
 values[2] //acceleration on z axis

你需要找出重力在哪个方向上运行,然后把它分解成它的组成部分。重力的大小将始终是9.8,但方向以及它如何分解为组成部分将发生变化。假设我们可以获得重力的值,并将该向量存储在像gravity[3]这样的数组中

代码语言:javascript
复制
 gravity[0] //gravity x axis
 gravity[1] //gravity y axis
 gravity[2] //gravity z axis

手机上的总加速度TT = g + a。为了只获取a,我们需要a = T - g

代码语言:javascript
复制
 linear_acceleration[0] = event.values[0] - gravity[0];
 linear_acceleration[1] = event.values[1] - gravity[1];
 linear_acceleration[2] = event.values[2] - gravity[2];

请注意,这是如何逐个元素计算所有内容的,因为这是一个向量运算。

棘手的部分是寻找gravity,因为手机中只有一个加速计,可以同时测量重力和其他力。我们有两个不同的力,我们想从一个传感器中找到它们。如果我们只能在一个孤立的时间点上观察这些力,我们就无法提取信息。然而,我们确实在一段时间内获得了样本,通过观察力如何随时间变化,我们可以提取信息。

这意味着我们需要根据这些力量变化的速度过滤掉来自某个来源的结果。由于重力引起的加速度的大小不会很快改变,因为它根本不会改变。重力是一种恒定的力。然而,其他的力量会随着时间的推移而改变。如果我们使用高通滤波器过滤掉重力等缓慢变化的力,那么剩下的力就是变化快的力,比如施加在手机上的力。这就是使用高通滤波器的原因。

票数 28
EN

Stack Overflow用户

发布于 2014-06-09 19:56:31

低通滤波器:通过低频信号并降低频率高于阈值频率的信号的幅度

高通滤波器:通过高频信号,降低频率低于阈值频率的信号幅度

如果你看看documentation,它说:“为了测量设备的实际加速度,必须消除重力的影响。这可以通过应用高通滤波器来实现。相反,可以使用低通滤波器来隔离重力。”

你可以看看这个关于低通滤波的教程:

Samir Bhide:

阅读http://developer.android.com/reference/android/hardware/SensorEvent.html#values上的文档,您可以看到可以通过执行以下操作访问所有x,y,z轴上的a值:

代码语言:javascript
复制
values[0] - a on x axis
values[1] - a on y axis
values[2] - a on z axis
票数 18
EN

Stack Overflow用户

发布于 2016-06-19 11:16:37

如果直接从包含噪声的这些值中减去,则加速度计的输出将包含噪声。为了消除噪声,需要实现高通和低通滤波器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24119672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档