Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab和java中的fft_Java_Matlab_Fft - Fatal编程技术网

matlab和java中的fft

matlab和java中的fft,java,matlab,fft,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.00

我使用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
结果是不同的还是Matlab只是对值进行四舍五入?

进行FFT有很多方法。原则上他们都是平等的,但在实践中,再加上,结果会略有不同。即使基本FFT算法相同,实现细节(如求和顺序)也可能导致差异。根据优化标志,即使您没有做任何特殊的事情,也会有很多


在您的结果中,差异大约在第五个有效数字处。这是一个相当小的差别。您可以尝试对结果进行逆变换(使用Matlab和JTTransforms IFT),以查看其中一种变换是否更精确。

对于双精度浮点运算,差异似乎大于正常的数值精度问题。看起来更像是其中一个FFT使用了一些短浮点运算或数据,并将结果打印为双精度(这使得所有额外的数字都变得毫无意义)。

完全不同。一个库使用32位浮点而另一个库使用64位浮点吗?在这种情况下,可能是这样,也可能不是这样,但至少FPA精度没有“正常”这回事。特别是,在累加器/积分器(FFT算法不可避免地包含)中,舍入误差几乎可以无限累积。