【问题标题】:how to normalize 1 dimensional FFT output如何标准化一维 FFT 输出
【发布时间】:2012-07-12 18:00:26
【问题描述】:

我正在使用 FFTW 分析高程数据,但我只是通过查看一个简单的 1D fft 来确保一切正常。除了标准化(比例)因素外,它似乎有效,我无法从文档中弄清楚,主要是因为我的数字大得离谱。例如,当我试图只取一个余弦波的 fft 时

1 6.12323e-017 -1 -1.83697e-016 1 3.06162e-016 -1 -4.28626e-016 1 5.51091e-016 -1      -2.44991e-015 etc...

我得到了变换

4.33743e-013 1.06036e+267 3.25205e+265 1.05963e+267 6.49675e+265 1.05743e+267 9.72679e+265 1.05379e+267 1.29349e+266    1.04869e+267 1.61138e+266 1.04216e+267 etc...

例如,可笑的巨大数字。

任何帮助将不胜感激。

【问题讨论】:

  • 这是读取未初始化数据的一个非常明显的症状。您可能想确保您的输入向量实际上是正确的。
  • Mystical 和 Danial 完全正确。问题不在于程序,而在于使用它的笨蛋。

标签: c++ fft fftw


【解决方案1】:

您正在对复数进行 FFT,但您将数组初始化为普通(没有虚部)数组。

我继续站在他们一边,发现有一些新功能可以提供双重到复数和复数到双重 fft-ing。干净利落!

这里:http://www.fftw.org/doc/New_002darray-Execute-Functions.html

【讨论】:

  • *facepalm。就是这样。除非您另有说明,否则我使用的最后一个 FFT 模块假定为实数。除非另有说明,否则 FFTW 假定为复数。
  • 我很幸运,因为我的朋友在汇编中使用窗口函数来加速我的项目,问题是:为什么输出数据(来自窗口函数)的大小是两倍(每隔一个数字为零)...
猜你喜欢
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 2017-12-21
  • 2019-10-18
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 2020-11-16
相关资源
最近更新 更多