как нормализовать 1-мерный вывод БПФ

Я использую FFTW для анализа данных о высоте, но я начал с простого 1D 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...

например, смехотворно огромные числа.

Любая помощь будет оценена по достоинству.


person bigbenbt    schedule 12.07.2012    source источник
comment
Это довольно явный признак чтения неинициализированных данных. Возможно, вы захотите убедиться, что ваш входной вектор действительно правильный.   -  person Mysticial    schedule 12.07.2012
comment
Мистик и Даниал поняли это совершенно правильно. Проблема была не в программе, а в том, что тупица ее использовала.   -  person bigbenbt    schedule 12.07.2012


Ответы (1)


Вы используете комплексные числа FFT, но вы инициализировали свой массив как обычный (без мнимой части) массив.

Я пошел дальше на их сторону и обнаружил, что есть НОВЫЕ функции, которые обеспечивают двойное преобразование в сложное и сложное в двойное преобразование. Аккуратно-о!

Здесь: http://www.fftw.org/doc/New_002darray-Execute-Functions.html

person Daniel Mošmondor    schedule 12.07.2012
comment
*фейспалм. Это было именно так. В последнем модуле БПФ я использовал предполагаемые действительные числа, если вы не указали иное. FFTW предполагает сложность, если не указано иное. - person bigbenbt; 12.07.2012
comment
Мне повезло, так как мой друг делал оконные функции на ассемблере, чтобы ускорить мой проект, и возник вопрос: почему выходные данные (из оконных функций) имеют двойной размер (каждое второе число равно нулю)... - person Daniel Mošmondor; 12.07.2012