fft算法c语言复数结果是啥,算法-为什么FFT产生复数而不是实数?

fft算法c语言复数结果是啥,算法-为什么FFT产生复数而不是实数?是的 可以仅使用实数来表示严格实数输入的 FFT 频域结果

是的,可以仅使用实数来表示严格实数输入的FFT频域结果。

FFT结果中的那些复数仅是2个实数,都需要给它们提供具有长度和方向角(或幅值和相位)的结果向量的2D坐标。 FFT结果中的每个频率分量都可以具有唯一的幅度和唯一的相位(相对于FFT孔径中的某个点)。

单是一个实数不能代表幅度和相位。 如果丢掉相位信息,如果尝试使用iFFT重建信号,信号很容易使信号失真(信号不对称)。 因此,完整的FFT结果需要每个FFT仓2个实数。 根据常规约定,这2个实数在复杂数据类型的某些FFT中捆绑在一起,但是FFT结果可以轻松地(有些FFT确实)产生2个实矢量(一个用于余弦坐标,一个用于正弦坐标)。

还有一些FFT例程可以直接产生幅度和相位,但是它们的运行速度比产生复杂(或两个实数)矢量结果的FFT慢。 还有一些FFT例程,它们仅计算幅度并丢弃相位信息,但是它们运行的速度通常不会比一般的FFT处理之后要快。 也许他们以不可逆的代价为编码员节省了几行代码。 但是,很多库都不会费心去包含这些较慢且不太通用的FFT形式,而只是让编码器转换或忽略它们需要或不需要的内容。

另外,许多人认为使用复杂的算术可以使所涉及的数学更加优雅。

(添加:)此外,作为另一种选择,您可以考虑每个FFT结果仓中的两个分量,而不是将实数和虚数分量视为偶数和奇数分量。

编程小号
上一篇 2025-02-17 20:51
下一篇 2025-02-26 13:46

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/79147.html