【问题标题】:Which difference between normalize signal before or after FFT?FFT之前或之后归一化信号之间有什么区别?
【发布时间】:2013-01-22 04:35:35
【问题描述】:

我正在使用 Libgdx 库对 Android 应用中的加速度计信号进行 FFT。

我需要对信号进行归一化,因为我找到了两个信号的点积,我想要它的最大值 1。

标准化”是指信号的欧几里得范数为1。 (欧几里得范数是向量模拟分量乘积之和的平方根。当我找到它的值时,为了归一化信号,我将向量的所有分量除以范数)。

点积在频谱中,所以如果我在时域对信号进行归一化,频谱表示不是欧几里德归一化,那么我将再次进行欧几里得归一化。 (我已经考虑在 FFT 之后按 1/N 比例因子进行归一化,我认为这可能不会影响我的问题)。

如果我在 FFT 之前和之后进行欧几里得归一化,或者我只在 FFT 之后进行,有什么区别?

编辑 1:还要考虑 Libgdx 库中的 FFT 是复杂 DFT,并且我输入的实信号比输出信号对于 0 到 (N/2)-1 和 N/2 到 N 是对称的。 如果我不应用任何窗口(如 Hamming 窗口),我会验证 Parseval 定理是否得到验证。 那么,如果我使用 0 到 N/2-1 个信号分量,我会得到 0 到 1 之间的点积吗?

【问题讨论】:

  • 请考虑在dsp.stackexchange.com 中提出这个问题...有很多人在信号处理领域工作
  • 1.傅里叶变换是线性的和 2. parseval 定理。
  • 请注意,一些 FFT 实现应用了 1/N 的比例因子,一些 1/sqrt(N) 和一些 1.0(在 IFFT 上应用了 1/N)。此信息可能在您的库的文档中。
  • @hotpaw2,哦,对了,1/N 可能已经存在了……
  • 我不知道 dsp.stackexchange.com,我会考虑在那里发布我的问题。同时,我验证我的库具有 1/N 标准化因子。

标签: android signal-processing fft normalization libgdx


【解决方案1】:

嗯,似乎没有人回答这个问题。不知道为什么,但我会简单地说一下。

令 f[n] 为信号,F[k] 为傅里叶变换版本(显然是离散的)。

Parseval's theorem,我们知道:

  norm(f[n]) = (1/N) norm(F[k])

其中 N 是样本数。通过傅里叶变换的齐次性,如果g[n]=a f[n],则G[k] = a F[k]。

最后,结合这两者,为了让 norm(F[k]) 为 1,你需要做的就是除以:

 (1)      norm(F[k]) = N norm(f[n])

在时域或频域中。

类似的,如果你想让 norm(f[n]) 为 1,你需要做的就是除以:

 (2)      norm(f[n]) = (1/N) norm(F[k])

最后:

如果我在 FFT 之前和之后进行欧几里得归一化,或者我只在 FFT 之后进行,有哪些区别?

因为傅立叶变换是线性的(并且保持同质性),所以无论您在之前还是之后进行划分都没有区别。但是,如果您希望时域的范数为 1,那么您应该使用 (2) 中的常数。另一方面,要使频域范数为 1,则应在 (1) 中使用常数。

【讨论】:

  • 感谢您的回答,但不是我想要的。您建议我对 FFT 算法的归一化因子有一个清晰的模式,但我正在寻找了解欧几里得范数归一化对信号的影响,在时间表示之前和频率表示之后。如果我是正确的,例如,如果我使用经典的 DFT 变换而不是 FFT 算法,(也许)1/N 因子(或类似的)不是必需的,但“欧几里得归一化”仍然需要做。
  • @robott,实际上我认为答案正是您正在寻找的:p 我期待您关注 Parseval 链接。您所说的欧几里得范数通常称为 L2 范数。 Parseval 定理说 L2 范数通过傅里叶变换保留(在离散 FT 中,直到恒定的 1/N 因子)。这就是为什么我在回答中说:在之前或之后划分都没有区别(只要您可以考虑常数因子,这可能已经由您的库完成)。我将更新答案以澄清这种混淆。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-04
  • 1970-01-01
  • 1970-01-01
  • 2015-09-24
  • 2015-04-19
  • 2019-02-12
  • 1970-01-01
相关资源
最近更新 更多