免责声明:我不是信号处理专家。
我正在编写一个函数,它采用一维数组并对其执行快速傅里叶变换。以下是它的工作原理:
- 如果数组的大小不是 2 的幂,则在末尾用 0 填充,使其大小变为 2 的幂。
- 对填充数组执行 FFT 并将结果存储在数组中
x
。 - 对复数数组进行下采样
x
以匹配原始非填充数组的长度。 - 返回
x
。
我在第 3 步遇到问题。如果我省略第 3 步并对函数调用的结果执行逆 FFT,我会得到初始填充数组,这意味着函数成功执行了第 1 步和第 2 步。
我尝试通过使用线性插值进行下采样来实现步骤 3,但是当我使用 MatLab 对最终结果执行傅里叶逆变换时,我得到的结果与原始数组不等价。我需要使用的编程语言不是MatLab,我只是使用 MatLab 来验证结果的正确性。
我可以使用哪些技术来执行步骤 3,同时仍然能够在逆 FFT 后取回原始的未填充数组?