フーリエ変換についての私の限られた理解は、元のデータを変更せずに時間領域と周波数領域を切り替えることができるはずだということです。だから、これが私(私が思う)がしていることの要約です:
kiss_fft_next_fast_size(994)
1000を使用する必要があることを決定するために使用します。を使用してkiss_fft_cfgを
kiss_fft_alloc(...)
作成します。nfft = 1000
余分なポイントをゼロとしてパディングすることにより、入力データをサイズ994から1000に拡張します。
入力配列と出力配列とともに kiss_fft_cfgをに渡します。
kiss_fft(...)
を使用して逆kiss_fft_cfgを
kiss_fft_alloc(...)
作成します。nfft = 1000
逆のkiss_fft_cfgを渡して
kiss_fft(...)
、前の出力配列を入力します。元のデータが戻ってくることを期待していますが、各データを正確に1000倍大きくしています!
ここに完全な例を示しました。50行のコードが最後にあります。OPTIMAL_SIZE
各結果を(つまり1000)の値で割ることでこれを回避できますが、その修正により、理由がわからずに非常に不安になります。
私が間違っている単純な愚かなことを教えてください。