RosettaCode предлагает простую реализацию алгоритма БПФ Кули-Тьюки здесь. Вопрос следующий и с математической и программной точки зрения. Предположим, что ввод программы — это спектр сигнала, и мы хотим сгенерировать сигнал, который имеет такой спектр. Если я прав, нам нужно взять обратное БПФ входного спектра.
Код, данный RosettaCode, следующий:
// inverse fft (in-place)
void ifft(CArray& x)
{
// conjugate the complex numbers
x = x.apply(std::conj);
// forward fft
fft( x );
// conjugate the complex numbers again
x = x.apply(std::conj);
// scale the numbers
x /= x.size();
}
Но это может генерировать только один сигнал. Но несколько сигналов могут иметь один и тот же спектр. Итак, как добавить параметр, чтобы иметь возможность генерировать эти разные сигналы?