Я делаю приложение, которое отображает БПФ звуковых данных с микрофона.Одна вещь, которую я должен поддерживать, это калибровка по частотной характеристике микрофона, которая будет передана программе через файл калибровки.Файл калибровки содержит значения + или - дБ для разных частот, например:
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
Я могу просто применить калибровку после БПФ и до его отображения на экране.
Моя проблемаэто: как я должен интерполировать между этими значениями, которые, по сути, являются просто точками выбора всей частотной характеристики микрофона?Наивным подходом может быть определение жестких прямоугольных полос вокруг этих точек и, для каждой частоты в БПФ, выбрать ту или иную калибровочную линию для применения к этой частоте.Однако это приведет к видимым скачкам на графике БПФ.Другим решением может быть использование линейной интерполяции, но я все еще не уверен, что это лучший способ.
Существует ли "стандартный" способ сделать это, что делают такие программы, как устройства Smaart или FFT?Как лучше всего создать непрерывную кривую из этих нескольких фиксированных точек?