RosettaCode 在这里给出了 Cooley–Tukey FFT 算法的简单实现。问题如下,从数学和编程的角度来看。假设一个程序的输入是一个信号的频谱,我们想要生成一个具有这样一个频谱的信号。如果正确,我们需要对输入频谱进行逆 FFT。
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();
}
但这只能产生一个信号。但是几个信号可以有相同的频谱。那么如何添加一个参数才能产生这些不同的信号呢?