1

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();
}

但这只能产生一个信号。但是几个信号可以有相同的频谱。那么如何添加一个参数才能产生这些不同的信号呢?

4

2 回答 2

2

不,不同的信号有不同的傅里叶变换;它是可逆的。N个复数输入,N个复数输出;离散傅里叶变换相当于将一个样本向量乘以一个非奇异矩阵,得到一个相同大小的向量。

您可能会将实际的傅里叶变换与获取傅里叶变换幅度的“频谱”或其他信息破坏操作的结果混淆。

于 2015-05-11T16:15:11.363 回答
1

FFT 基变换的一个特性是,唯一的有限信号具有唯一的有限谱(如在完整的完全复矢量中),反之亦然。如果相位不同,复频率的分量也会不同。

于 2015-05-11T20:03:12.310 回答