我对傅里叶变换的了解很有限,但应该能够在不改变原始数据的情况下在时间域和频率域之间切换。因此,这是我(认为我)正在做的事情的概要:
请问您能否指出我在做错了什么?
- 使用
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(...)
创建一个反向的 kiss_fft_cfg,其nfft = 1000
。 - 将反向的 kiss_fft_cfg 传递给
kiss_fft(...)
,并输入先前的输出数组。 - 期望获得原始数据,但实际上每个数据都比原来大了 1000 倍!
OPTIMAL_SIZE
的值(即 1000)来解决这个问题,但在不理解原因的情况下,这种修复方法让我感到非常不安。请问您能否指出我在做错了什么?