当我将 Matlab 软件的不同运行结果与相同的输入进行比较时,我遇到了问题。为了缩小问题范围,我做了以下事情:
- 使用 Matlab 的 save() 方法保存所有相关变量
- 调用计算某事的方法
- 使用 save() 再次保存所有相关的输出变量
在不更改被调用方法的情况下,我又运行了一次
- 加载上面保存的变量并使用 isequal() 与当前输入变量进行比较
- 使用当前输入变量再次调用我的方法
- 加载上面保存的 out 变量并进行比较。
我不敢相信最后“行”中的比较检测到细微的差异。计算包括单精度和双精度数,误差在 1e-10 的量级(输出为双精度数)。
我能想象的唯一可能的解释是,Matlab 在保存变量时会丢失一些精度(我认为这不太可能,我使用默认的二进制 Matlab 格式),或者包含像 a=b+c+d 这样的计算,这可以计算为 a=(b+c)+d 或 a=b+(c+d),这可能会导致数值差异。
您知道上述观察结果的原因可能是什么吗?
非常感谢!