计算 DFT 变换的每个样本的范数

信息处理 离散信号 傅里叶变换 自由度 规范
2022-01-26 07:02:53

给定一个离散信号{x[n]}n=0N1及其离散傅里叶变换X[k]=DFT{x[n]}[k].

我想有效地计算DFT的每个样本的范数,即 |X[k]|2,k{0,N1}与 DFT 系列的范数相反(这等于原始系列的范数)。

是否可以在不使用复数乘法的情况下计算(因为它是真实的)?
也就是说,我不想通过 DFT 的计算,然后计算每个样本的范数。
如果什么x[n]也是一个对称信号(就此而言的自动相关),我假设然后使用余弦部分使其成为可能?

谢谢你。

2个回答

简单的答案:是的,这可以通过各种不同的方式完成:

  1. 计算akbk常规傅里叶级数( http://en.wikipedia.org/wiki/Fourier_series )的系数,然后ak2+bk2是频率 k 的范数。这相当于将原始 DFT 方程拆分为实部和虚部
  2. 计算自相关cxx[n]x[n]. 然后只计算余弦系数ak的傅里叶级数cxx[n].ak是频率 k 的范数。

然而,这些方法中的每一种在计算上都比简单地进行 DFT 然后取幅度平方的效率低得多。到目前为止,使用 DFT(具有复杂的数学)是最有效的方法。如果您担心计算效率,您可以利用输入信号是真实的这一事实来减少大约 1/3 到 1/2 的计算时间。实函数的 DFT 可以通过使用一半长度的复信号的 DFT 来计算。这需要一些额外的数学,我将在这里跳过。

单个数字的范数就是它的绝对值。在你的情况下,规范X[k]用通常的复数距离公式获得:

|X[k]|=Re(X[k])×Re(X[k])+Im(X[k])×Im(X[k])
.