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