Мое ограниченное понимание преобразования Фурье заключается в том, что вы должны иметь возможность переключаться между временной и частотной областями без изменения исходных данных. Итак, вот краткое изложение того, что я (думаю, я) делаю:
Использование
kiss_fft_next_fast_size(994)
для определения, что я должен использовать 1000.Использование
kiss_fft_alloc(...)
для создания kiss_fft_cfg сnfft = 1000
.Расширение моих входных данных с размера 994 до 1000 путем добавления дополнительных точек как нуля.
Передача kiss_fft_cfg в
kiss_fft(...)
вместе с входными и выходными массивами.Использование
kiss_fft_alloc(...)
для создания обратного поцелуя_fft_cfg сnfft = 1000
.Передача обратного kiss_fft_cfg в
kiss_fft(...)
ввод предыдущего выходного массива.Ожидая возврата исходных данных, но получая каждое значение ровно в 1000 раз больше!
Я поместил полный пример здесь, и мои 50 с лишним строк кода можно найти в самом конце. Хотя я могу обойти это, разделив каждый результат на значение OPTIMAL_SIZE
(т. е. 1000), это исправление очень беспокоит меня, хотя я не понимаю, почему.
Пожалуйста, не могли бы вы посоветовать, какую просто глупость я делаю неправильно?