Я пытаюсь вычислить фактическую частотную характеристику из желаемой частотной характеристики.
fftSize = 128;
fs = 8000;
У меня есть 2 входных массива: f [] и aDesired [], оба из которых являются вещественными и имеют длину fftSize + 1 (включая DC + Найквиста). Массив f [] линейно расположен между 0 и fs / 2 (0: 4000). Массив aDesired [] имеет либо усиление в дБ, либо линейные значения.
Я могу легко изменить длину f [] и aDesired [], так как у меня есть функция интерполяции, которая дает выходные данные любого размера, но я подумал, что это хорошее число.
Я хотел бы взять IFFT из ADesired [], чтобы сгенерировать коэффициенты (с настраиваемой длиной), окном и усечь коэффициенты, а затем FFT, чтобы показать, каким будет реальный ответ, aActual [].
Как я могу получить IFFT / FFT этих данных, когда оба входа являются реальными? Или как мне подготовить данные больше?
Может быть, есть библиотека, которая может быть полезна с моими входными данными?
Резюме:
Input: f[129] : linearly spaced fc's
aDesired[129] : Real values of linearly spaced gains at fc's (either in lin or log),
Processing:
coeffs = IFFT(f, aDesired)
coeff_new Truncate(window * coeff)
aActual = FFT(f, coeff_new)
Output: aActual[]
Большое спасибо
Попробуйте IT ++, который предназначен для моделирования на физическом уровне.
Других решений пока нет …