我对傅里叶变换的有限理解是,您应该能够在不更改原始数据的情况下在时域和频域之间切换。所以,这里是我(认为我)正在做的总结:
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_cfgnfft = 1000
。将逆的kiss_fft_cfg传递给
kiss_fft(...)
输入前一个输出数组。期望返回原始数据,但将每个数据精确地放大 1000 倍!
我在这里放了一个完整的例子,我的 50 多行代码可以在最后找到。虽然我可以通过将每个结果除以OPTIMAL_SIZE
(即 1000)的值来解决这个问题,但这个修复让我非常不安,不明白为什么。
请你能告诉我我做错了什么愚蠢的事情吗?