c++ - 逆快速傅立叶变换 : different phases

标签 c++ math fft spectrum ifft

RosettaCode 给出了 Cooley–Tukey FFT 算法的简单实现 here .问题如下,是从数学和编程的角度来看的。假设一个程序的输入是一个信号的频谱,我们想要生成一个具有这样频谱的信号。如果正确,我们需要对输入频谱进行逆 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();
}

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

最佳答案

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

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

关于c++ - 逆快速傅立叶变换 : different phases,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30172517/

相关文章:

python - numpy.fftn 中哪些是高频项?

c++ - 如何在图中找到 3 条边的负加权循环?

c++ - 赋值运算符(+= 和 =)之间的区别

windows - MulDiv 是否比存储已知值和在其他代码中进行数学计算效率低

java - 通过连接前 n 个自然数的二进制表示形式形成的数字的十进制值

audio - 从音频文件中查找每秒的频率

c++ - 激活记录

c++ - Windows 2000 的 GetProcessID 的替代方法

c# - 在运行时从字符串创建数学函数

python - 这个傅立叶变换有什么问题? (在Python中)