在matlab和java中的fft

Rad*_*dek 5 java matlab fft

我使用jtransforms库在matlab和java中做了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
Run Code Online (Sandbox Code Playgroud)

结果是不同的还是Matlab只是四舍五入?

Joo*_*kka 7

几种不同的 FFT 算法.原则上它们都是相同的,但在实践中,结合浮点运算,结果会略有不同.即使基本FFT算法相同,诸如求和的顺序之类的实现细节也可能导致差异.即使你没有做任何特殊的事情,许多现代处理器也会这样做,具体取决于优化标志.

在您的结果中,差异大约是第5位有效数字.这是一个相当小的差异.您可以尝试对结果进行逆变换(使用Matlab和JTransforms IFT)来查看变换中的一个或另一个是否明显更准确.