我正在将 Matlab 代码转换为 Java,我有一个问题,我不明白 Matlab 中的普通X = ifft(___)
函数与X = ifft(___,symmetric)
函数之间的区别。他们编写的 Matlab 文档:
对于近共轭对称向量,您可以通过指定"对称"选项更快地计算傅里叶逆变换,这也确保了输出是真实的。
这意味着FFT只是更快? 结果是真实的,没有虚部。
要在Java中使用Inverse FFT,我使用Apache Commons Library。
FastFourierTransformer fft = new FastFourierTransformer(DftNormalization.STANDARD);
X= fft.transform(X, TransformType.INVERSE); //X is a Complex Array
如果我在 Matlab 中使用对称,这会给我不同的结果。在 matlab 中没有对称,我有相同的结果。
我的 Ifft 有什么问题?如何用Java计算ifft对称性?
如果你的X是实数,因此你的Y是共轭对称的,你可以使用"对称"选项更有效地运行fft或ifft。如果此前提条件不适用,则不应使用"对称"选项。可能你的X不是真的,是吗?