当我比较具有相同输入的 Matlab 软件的不同运行结果时,我遇到了问题。为了缩小问题范围,我执行了以下操作:
- 使用 Matlab 的 save() 方法保存所有相关变量
- 调用一个计算某些东西的方法
- 使用 save() 再次保存所有相关的输出变量
在不更改调用方法的情况下,我又运行了一次
- 加载上面保存的变量并使用isequal()与当前输入变量进行比较
- 使用当前输入变量再次调用我的方法
- 加载上面保存的输出变量并进行比较。
我无法相信最后“行”中的比较会检测到细微的差异。计算包括单精度数和 double ,误差在1e-10的量级(输出为 double )。
我能想到的唯一可能的解释是 Matlab 在保存变量时失去了一些精度(我认为这不太可能,我使用默认的二进制 Matlab 格式)或者包含了像 a=b+c+d 这样的计算,可以计算为 a=(b+c)+d 或 a=b+(c+d),这可能会导致数值差异。
您知道上述观察结果可能是什么原因吗?
非常感谢!
最佳答案
这似乎真的是计算中的单/双混合造成的。由于我只切换到 double ,因此问题不再发生。感谢大家的想法。
关于matlab - Matlab 中的数值问题 : Same input, 相同的代码 -> 不同的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3608853/