1

实现低通滤波器的算法如下(来自维基百科):

for i from 1 to n
   y[i] := y[i-1] + α * (x[i] - y[i-1])

在哪里

α = T/(tau + T)

T 是周期,换句话说,是接收数据的时间间隔。tau 是时间常数,定义为:

tau = RC.

好的,一切都清楚了。每个人似乎都为 α 提出了不同的值,但它打败了我——如何才能为这个值做出合乎逻辑的决定?

当然,R 和 C 的值无法使用 - 是吗?

有人知道如何确定 tau 的值,从而确定 α 的值吗?

谢谢大家!

4

4 回答 4

1

T:采样周期。

tau:时间常数。

fc:滤波器的截止频率。fc = 1 / τ

然后

阿尔法 = T / ( T + 1/fc )

此致!

于 2012-11-06T02:24:16.020 回答
0

我在使用低通滤波器计算罗盘传感器数据的平滑参数(ALPHA)时遇到了同样的问题。

我已经弄清楚并且计算出的 ALPHA 值对我的应用程序很有用。

有关更多理解和讨论,请参阅以下帖子

如何计算低通滤波器的平滑参数值(在罗盘传感器数据平滑的情况下)

于 2013-12-26T01:43:21.637 回答
-1

对于不同的低通滤波器,您可能需要考虑 RBJ 双二阶:

http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt

这里详细描述了它的实现:

http://blog.bjornroche.com/2012/08/basic-audio-eqs.html

于 2012-11-06T04:25:15.443 回答
-1

来自维基百科的 RC 时间常数条目截止频率- 时间常数与截止频率 fc 有关,这是 RC 电路的替代参数

tau = 1 / (2π * f)

为什么是 2π?来自维基百科的时间常数条目

ω = 2π * f is the frequency in radians per second.

同一个条目来看,Tau 相当于 RC,是系统的上升时间。低上升时间意味着较高频率的输入不会激励系统。很容易想象它与低通滤波器的截止频率相连。最终,它控制有多少反馈信号与新输入信号混合。

在我的二阶低通滤波器中,我将以下内容用于 alpha。

α = 1 / (T * tau)

在我的音频应用程序中,二阶滤波器是两个链接的单阶滤波器,我像这样计算滤波器输出。filter1Out并且filter2out是过滤器的当前值,这是接收后的更新input

filter1Out = filter1Out + (alpha * (input - filter1Out));
filter2Out = filter2Out + (alpha * (filter1Out - filter2Out));

为了确定您希望 Android 指南针的截止频率是多少,我首先不会实施任何过滤并尝试使用提供的数据。截止实际上取决于您对信号的处理方式。您是否为屏幕动画平滑它?您是否对其进行平滑以进行路径跟踪?您要拒绝的信号中是否有噪声?每个都可能需要不同的设置。如果未过滤的信号变化太频繁,那么请计算出您希望它多久改变一次,并将其用作滤波器截止的起点。

我希望这有帮助。DSP 数学的推导超出了我的技能,但我已经为音频应用实现了几次低通滤波器。

于 2012-11-11T01:06:08.967 回答