DFT 公式为
是否可以从 DFT 中获得绝对值而无需计算虚部?我只需要信号幅度值,而不是相位。我正在尝试创建一个频谱图,所以我想知道是否有捷径,或者我是否必须将复杂的数学编程到编程语言中
DFT 公式为
是否可以从 DFT 中获得绝对值而无需计算虚部?我只需要信号幅度值,而不是相位。我正在尝试创建一个频谱图,所以我想知道是否有捷径,或者我是否必须将复杂的数学编程到编程语言中
由于是正交的,尽管存在快速算法,但傅立叶技术最终还是求助于最小二乘谱分析,即找到以下形式的项之和
这可以通过线性代数来解决,用纯实数计算。请记住,在傅立叶(1768-1830)时代,复数算术还没有完全发展起来。Carl F. Gauss (1777-1855) 有时被认为是第一次使用快速技术来解决它。
所以是的,你可以避免复数,但是, 是真实的,,实数,完全等价于某个复数。复数只是线性时不变系统分析的基础,因为它们形成了它们的不变特征向量,或者允许对角化它们。
是的。你可以进行计算。但是,不,这不是捷径。
如果您想快速获得 DFT 幅度(例如,使用 O(NlogN) FFT 算法),那么您将需要复杂的数学(或其计算等价物)。这是因为 DFT 基向量的余弦和正弦形式是正交的,您需要两者都能够完全表示任意输入波形。基向量的正弦部分由 FFT 复数结果的虚部表示。因此,需要计算 FFT 的完整复数结果,以便最终获得足够的信息来确定幅度或幅度结果。
如果可以接受慢速 DFT 计算,那么您可以使用严格的实数算术计算余弦分量,然后也使用实数单独计算正弦分量。然后计算幅度的实三角形的斜边。不需要复数。但是这种方法是 O(N^2),需要更长的时间。
对于仅幅度结果(计算缓慢),N Goertzel 过滤器是另一种可能性,并且可以节省触发函数调用。