我只想澄清某些“FFT 实现”之间的区别。我读过有 1D FFT,然后有 2D FFT 和其他。
我可以知道这些有什么区别吗(例如输入、输出等)。例如,什么维度的FFT使用arr[n*2] = real和arr[n*2+1] = imaginary的输入?
另外,Complex[] 对某些 FFT 算法有什么用?我注意到他们在 FFT 算法中使用了 X 和 Y。哪个是真实的和想象的?
谢谢!
最佳答案
正弦和余弦函数具有 90 度相位差,并且由于频率数据可以具有任何相位,因此完整的 FFT 结果必须报告正弦和余弦分量。通过将这 2 个分量描述为 1 个复相量,可以“简化”FFT 的数学运算。而这些复数可以用一个二维量来表示(称为一维I和另一个Q,或X和Y,或U和V等)。一些 FFT 例程交错两个分量(余弦和正弦,或实数和虚数),有些将它们保存在单独的数组或向量中。
由于 FFT 的逆运算几乎是相同的计算,这意味着输入数据也可能很复杂,这可能有用也可能没用。如果您的数据没有第二个或“虚数”分量,您可以使用零提供 FFT,或者使用稍微修改的 FFT 算法,该算法通过隐式零修剪所有乘法。仅真实数据 FFT 的结果将具有一些冗余对称性,因此该结果也可能会被修剪。
关于signal-processing - FFT 类型的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5048413/