java - matlab 和 java 中的 fft

标签 java matlab fft

我在 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/

相关文章:

c++ - 使用 cuda cuFFT 从复数转换为实数时输出不正确

image-processing - 理解

java - 为什么对接口(interface)的引用数组可以容纳实现该接口(interface)的类?

java - 计算反射矩阵

java - 堆栈无法解析为类型 - VsCode

matlab - 如何加载内存中对我的机器来说太大的 .mat 文件的一部分?

matlab - 从第二中心矩计算对象统计

java - 如何从 Python 与 Java 交互

java - 如何向 Android 应用程序抽屉添加按钮、开关等?

matlab - 用循环 block 对 block 循环矩阵进行对角化