我已经在StackOverflow上发布了这个问题。我有一个建议可以在这里寻求更好的答案。
为了使问题更简洁,我对数字滤波器的介绍感兴趣,任何资源都是好的。
但是首先,如果有人可以向我介绍一些解释此过滤器的资源(在Android中使用),我将感到满意:
我感兴趣的是选择过滤器参数的方式。尽管我可以不加思索地复制它,但我想我应该在使用它之前了解其背后的基本概念/想法。
谢谢,
尤利安
我已经在StackOverflow上发布了这个问题。我有一个建议可以在这里寻求更好的答案。
为了使问题更简洁,我对数字滤波器的介绍感兴趣,任何资源都是好的。
但是首先,如果有人可以向我介绍一些解释此过滤器的资源(在Android中使用),我将感到满意:
我感兴趣的是选择过滤器参数的方式。尽管我可以不加思索地复制它,但我想我应该在使用它之前了解其背后的基本概念/想法。
谢谢,
尤利安
Answers:
您可以通过对以下模拟低通原型滤波器进行双线性变换来得出系数的表达式
其中是截止频率。
您可以在Wikipedia上查找双线性变换。
Android应用程序中使用的过滤器是Butterworth过滤器,因为选择的Q值为。请注意,在构造函数中,将计算Q的倒数并将其分配给变量iQ,该变量iQ用于系数的计算。还要注意,变量K保持指定的截止频率的“频率扭曲”值。您可以在上面的链接中找到有关频率扭曲现象的更多信息。
您可以找到许多有关使用双线性变换的数字滤波器设计的示例。我找到了这个,它非常接近Android示例。
https://ccrma.stanford.edu/~jos/filters/filters.html是对数字滤波器的一个非常好的全面介绍。您的特别示例是一个非常简单的二阶或四阶低通滤波器。如果使用“ Biquad”对象,则将获得二阶Butterworth滤波器。如果您使用“ CascadedBiquad”对象,则会得到所谓的4阶Linkwitz Riley过滤器(但不是4阶Butterworth)。实现是相当具体的。通过多做一些工作,您可以执行更通用且可用于所有应用程序的操作。
我发现真正有用的第一个参考文献是《数字信号处理科学家和工程师指南》。我认为这是很适合的选择,因为它旨在使读者熟悉DSP的概念和术语,而又不加深对数学的了解。这种方法适合我作为软件工程师的学习风格和背景,并且只注重EE。这些天来,我总是以这种方式处理新主题,试图首先理解高级概念,然后使用更详细/大量的其他信息源来更深入地研究细节。