signal-processing - FFT 类型的差异?

标签 signal-processing fft

我只想澄清某些“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/

相关文章:

java - 音频文件下采样

GPU的OpenCL FFT库?

python - 递归逆 FFT

Verilog 中的 FFT 实现 : Assigning Wire input to Register type array

javascript - 低速数据采样中的DFT分析

language-agnostic - 我可以通过立体声信号在频域中获得更高的分辨率吗?

android - 音频编程和音调合成

java - 使用过零率区分浊音/清音语音

c - 使用 Intel MKL 的 3D 卷积

matlab - 我有一个行向量,我想将其添加到矩阵的末尾