2012-02-01 103 views
2

什么是简单的方法来查看我的低通滤波器是否正常工作?我正在设计一个低通滤波器,并希望以相对直接的方式对其进行测试。测试低通滤波器

目前我打开一个WAV文件,并将所有样本粘贴在一个整数列中。然后我通过低通滤波器运行数组来创建一个新的数组。什么是简单的方法来检查低通滤波器是否工作?

所有这一切都在C.

完成
+1

从结果中呈现WAV文件并与任何播放器一起播放。实际上,也许你甚至可以通过简单地将数据写入RAW文件来渲染WAV,然后用播放器播放它,以便手动提供样本宽度,通道数和采样率等详细信息。 – Till 2012-02-01 16:42:11

回答

2

创建两个单调信号,低频率的一个和高频中的一个。然后运行你的过滤器。如果有效,那么低频信号应该是未修改的,而高频信号将被滤除。

9

可以使用一个宽带信号,例如白噪声,以测量频率响应:

  • 产生白噪声输入信号通过滤波器
  • 通白噪声信号
  • 采取FFT输出的来自滤波器
  • FFT的
  • 计算日志大小
  • 积数幅度

您可以将过滤器的输出转储到文本文件,然后在例如MATLAB或Octave(提示:使用periodogram)。

+0

这将是我的选择。不仅要检查它是否正常工作,还要检查它的特性。 – japreiss 2012-02-01 17:49:47

+1

您可能还想要FFT输入信号,以查看您的白噪声是否真的是白色的,和/或是否补偿。 – hotpaw2 2012-02-01 18:16:50

+1

@ hotpaw2:是的,你可以计算交叉功率谱,这可能比输出的功率谱更平滑。 – 2012-02-01 19:44:41

4

取决于你想测试什么。我不是DSP专家,但我知道可以对您的过滤器进行不同的测量(如果这是您的测试意思)。

如果滤波器是线性的,那么滤波器的所有信息都可以在脉冲响应中找到。在此处阅读:http://en.wikipedia.org/wiki/Linear_filter

E.g.如果你对脉冲响应进行傅里叶变换,你会得到频率响应。频率响应很容易告诉你,低通滤波器是否值得它的名字。

也许我低估了你对DSP的知识,但我建议你阅读本书的网站:http://www.dspguide.com。这是一本非常难读的书,没有难度的数学。它可以作为一本真正的书,但你也可以免费在线阅读。

编辑:在阅读它之后,我确信每个接触ADC的程序员都应该先阅读本书。我发现在过去的项目中我做了很多困难的事情,当我对DSP有更多的了解时,我可以做得更好一千倍。大多数时候,没有经验的程序员在不知情的情况下在做DSP。

0

您应该能够以编程方式生成各种频率的音调(正弦波),将它们填充到输入数组中,然后通过求和数组的平方值来比较信号能量(除以长度,尽管这是在数学上不需要,因为信号应该是相同的长度)。输出能量与输入能量的比率为您提供滤波器增益。如果您的LPF工作正常,对于低频率,增益应接近1,在带宽频率下接近0.5,高频率接近于零。

注意:“带宽”和“增益”的定义有很多(但本质上相同)。我建议的方法应该对滤波器的瞬态响应相对不敏感,因为它本质上是对信号的强度进行平均,尽管可以通过忽略输入的前T个采样来改善它,其中T与滤波器带宽有关。无论哪种方式,确保信号比滤波器带宽的倒数长。

0

当我检查数字滤波器时,我计算滤波器的幅度响应图并绘制它。然后,我用代码或使用Audacity生成线性扫描正弦波,并将扫描的正弦波通过滤波器(考虑到事情可能会变得更响,所以正弦波足够安静而不会被剪辑)。视觉检查通常足以断言过滤器正在做我认为应该做的事情。如果你不知道如何计算幅度响应,我怀疑有些工具可以为你计算。

根据你想要的确定程度,你甚至不必这样做。您可以处理线性扫描,并看到它衰减了较高的频率。