我在 matlab 和 java 中使用 jtransforms 库进行了 fft,但结果略有不同。
Matlab results:
-0.0530528652679544
-0.00775535711930750 + 0.0281791646147104i
-0.0304104457750988 - 0.209776156064443i
0.266945753193636 + 0.200338044445226i
Jtransforms results:
-0.05305448436232618
-0.007755593801247046 + 0.028180024600812384
-0.03041137385657606 -0.20978255812004887
0.26695389998013486 + 0.20034415846373468
是结果不同还是 Matlab 只是对值进行四舍五入?
最佳答案
有several different algorithms做 FFT。原则上它们都是平等的,但实际上,结合 floating-point arithmetic ,结果会略有不同。即使基本的 FFT 算法相同,求和顺序等实现细节也会造成差异。许多modern processors do this即使您没有做任何特别的事情,也取决于优化标志。
在您的结果中,差异大约在第 5 位有效数字处。这是一个相当小的差异。您可以尝试对结果进行逆变换(同时使用 Matlab 和 JTransforms IFT)以查看其中一种或另一种变换是否明显更准确。
关于java - matlab 和 java 中的 fft,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8789577/