Ric*_* Le 2 android smoothing lowpass-filter
有许多关于 Android 传感器数据噪声很大的帖子,以及关于实现低通滤波器等平滑算法的建议。我正在阅读低通滤波器,我发现我必须计算平滑参数 ALPHA。每个人都有不同的 ALPHA。然而,我很困惑,因为 wiki 和 Android 开发者网站之间并不一致。
\n\n根据维基http://en.wikipedia.org/wiki/Low-pass_filter
\n\nALPHA = dT / (dT + RC):dT 为事件传递速率,RC 为低通滤波器\xe2\x80\x99s 时间常数
根据Android开发者网站 http://developer.android.com/guide/topics/sensors/sensors_motion.html
\n\nALPHA = RC / (RC + dT): dT 为事件传递速率,RC 为低通滤波器\xe2\x80\x99s 时间常数
两个公式将产生两个不同的 ALPHA。这让我很困惑。\n哪个公式是正确的?大家能给我解释一下吗?
\n\n预先感谢。
\n我们来对比一下两个版本吧!
这里我使用时间常数“tau”
Alpha_A = dt / (dt + tau)
Alpha_B = tau / (tau + dt)
Run Code Online (Sandbox Code Playgroud)
让我们在其中添加一些值。咱们试试吧:
dt = 0.5, tau = 1;
Alpha_A = 0.5 / (0.5 + 1.0) = 1/3
Alpha_B = 1.0 / (1.0 + 0.5) = 2/3
Run Code Online (Sandbox Code Playgroud)
因此:
Alpha_A = 1 - Alpha_B
Run Code Online (Sandbox Code Playgroud)
这取决于您如何定义低通滤波器。是吗:
New_Filtered = New_Raw * Alpha + Prev_Filtered * (1-Alpha)
Run Code Online (Sandbox Code Playgroud)
或者
New_Filtered = New_Raw * (1-Alpha) + Prev_Filtered * Alpha
Run Code Online (Sandbox Code Playgroud)
IE Alpha 是直接处理原始数据,还是之前过滤后的数据?
实际上他们做了同样的事情!
| 归档时间: |
|
| 查看次数: |
3798 次 |
| 最近记录: |