最近在将matlab代码转为python代码时,出现了一些问题,主要是在浮点数的误差方面的问题。
原本在matlba和numpy中相同的float64数组,在做FFT变换后,发生了一些细微的改变。如图1所示,其中在e-10这个量级上十分明显。
图2可以发现在e-8以上,两者基本上没有差别,e-9以上会存在差异。
结论:matlab程序的最终实验结果是比较正确的,在转换到python上后实验结果非常差,由此能判断numpy的浮点数计算存在更大的误差。
网上找了一些解决此问题的办法,如:1、使用decimal模块,2、python中使用128位浮点数。第一种方法不能处理大规模数组运算,放弃。第二种方法发现np.float128不存在。
这个问题暂时搁置了,如果有能解决此问题的老哥,可以评论区留言,万分感谢。