2012-07-12 64 views
2

我正在使用FFTW来分析高程数据,但是我只是通过查看一个简单的1D fft来开始,以确保我能够正常工作。它似乎工作,除了规范化(规模)因素,我不能从文档中找出,主要是因为我的数字是可笑的大。例如,当我试图只取一个余弦波如何正常化1维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... 

的FFT我得到的变换是

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... 

例如,可笑的庞大的数字。

任何帮助,将不胜感激。

+0

这是一个非常明显的症状,读取未初始化的数据。你可能想要确保你的输入矢量实际上是正确的。 – Mysticial 2012-07-12 18:02:56

+0

可能会给我们一些代码? – Tobas 2012-07-12 18:04:22

+1

神秘和丹尼尔完全正确。问题不在于程序,而在于使用它的愚蠢行为。 – bigbenbt 2012-07-12 18:20:50

回答

6

您正在FFT复数,但您正常(没有虚部)数组初始化阵列。

我继续他们的身边,发现有新的功能可以提供双重复杂和复杂的双重功能。整洁-O!

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

+0

* facepalm。就是这样。除非另有说明,否则我使用的最后一个FFT模块假定为实数。除非另有说明,否则FFTW假定复杂。 – bigbenbt 2012-07-12 18:20:04

+0

我很幸运,因为我的朋友在组装中加窗函数来加速我的项目,问题是:为什么输出数据(来自窗口函数)的大小是双倍的(每隔一个数字为零)... – 2012-07-12 18:30:42