gpt4 book ai didi

android - 实现数字滤波器 - 通过卷积或差分方程?

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:42 25 4
gpt4 key购买 nike

我是一位经验丰富的软件工程师,并且在大学里修过一些电子工程类(class)。我在 iPhone 和 Android 上编程,我想为实时麦克风和加速度计数据实现数字滤波器(例如低通、带通、带阻等)。

我知道有多种等效方法可以在时域样本窗口上实现数字滤波器。我正在研究的两种方法是:

  1. 直接在 C/Java 代码中实现差分方程(例如y[i] = y[i-1] + 2 * x[i])。我相信这可以在 O(N) 时间内运行,其中 N 是样本窗口的长度,例如N=512。

  2. 在样本窗口和样本窗口之间实现卷积FIR 滤波器的时域表示,通常是某种形式的 sinc功能。我问了this question不久以前。这可以在 O(Nlg N) 如果您使用涉及 FFT 和 IFFT 的快速卷积。

现在,通过阅读各种在线资源,我发现 C/Java 编程的首选、传统智慧方法是上面的 (1),实现差分方程。这是一个正确的结论吗?

这是我发现的:

总而言之,我的问题确实是:

  1. 实现差分方程(而不是通过快速卷积)是用 C/Java 编写过滤器的方法吗?

  2. 以上引用资料均未说明如何在给定特定截止频率或带阻频率的情况下设计差分方程。我知道我之前研究过这个。有没有适合程序员的过滤引用资料?

最佳答案

时域差分方程卷积。对于基于 FFT 的方法,您想到的是频域卷积,又名快速卷积,这实际上只是一种性能优化 - 它在数学上等同于时域卷积。通常,对于小滤波器长度,直接时域卷积更快,而当滤波器长度大时,频域方法更胜一筹。根据经验,对于一维过滤,“大”意味着 N > 50。

在上面的段落中,我们只讨论了 FIR 滤波器。对于 IIR 滤波器,频域卷积不是一种选择(除非您在某个任意点截断脉冲响应),但与 FIR 滤波器相比,IIR 滤波器通常相对较短。

为了生成滤波器系数(即设计滤波器),您通常从滤波器规范开始,然后使用许多现有软件包中的一个来生成系数。如果你真的想,你可以实现你自己的滤波器设计例程 - 查看算法,如 Remez exchange .

关于android - 实现数字滤波器 - 通过卷积或差分方程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8420611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com