我正在制作一个显示麦克风声音数据FFT的应用程序。我需要支持的一件事是校准麦克风的频率响应,这将通过校准文件提供给程序。校准文件包含不同频率的+或 - dB值,如下所示:
20 -2.7
50 +0.5
100 +0.7
135 +0.7
190 +1.4
250 +1
370 +0.9
550 +1
700 +0.6
1000 +0.5
1500 +0.4
2000 +0.5
2800 +0.6
2900 +0.4
3000 +0.5
4000 -0.2
4300 -0.2
5600 +0.7
6150 +0.6
12000 +3.5
13000 +3.5
20000 -1.5
我可以在FFT之后以及在屏幕上显示之前应用校准。
我的问题是:我应该如何在这些值之间进行插值,这些值基本上只是麦克风整个频率响应的选择点?一种天真的方法可能是在这些点周围定义刚性矩形带,并且对于FFT中的每个频率,选择一个或另一个校准线以应用于该频率。然而,这会导致FFT图中的可见跳跃。另一个解决方案可能是使用线性插值,但我仍然不确定这是最好的方法。
有没有“标准”的方法来实现这一点,像Smaart或FFT设备这样的程序呢?从这几个固定点生成连续曲线的最佳方法是什么?
答案 0 :(得分:1)
除非我对校准数据的来源或导致非线性响应的可能机制有所了解,否则我会在每对点之间使用线性插值。
答案 1 :(得分:1)
我会使用某种方法(例如Wiener或LMS方法)对麦克风响应的频率响应进行近似滤波,或者只是采用简单的方法(参见注释)并在计算之前将其应用于记录的信号FFT。如果这不是一个选项,我会采用线性插值点,因为我不明白为什么这会导致任何“可见的跳跃”。