RosettaCode дает простую реализацию алгоритма FFT Кули-Туки here. Вопрос заключается в следующем и с математической и программной точки зрения. Предположим, что вход программы является спектром сигнала, и мы хотим генерировать сигнал, который имеет такой спектр. Если это правильно, нам нужно взять обратный БПФ входного спектра.Обратное быстрое преобразование Фурье: разные фазы
Код задается 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();
}
Но это может генерировать только один сигнал. Но несколько сигналов могут иметь один и тот же спектр. Итак, как добавить параметр, чтобы иметь возможность генерировать эти разные сигналы?
Различные сигналы могут иметь одинаковый спектр амплитуды (например, два сегмента синусоидальной волны с другой начальной фазой), но не могут иметь одинаковый полный спектр. – mtrw