Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 在Matlab中比较两个矩阵

我有两个矩阵x和y,它们都是来自应该计算相同结果的不同算法/例程的结果。虽然我知道isequal()会检查x和y是否为相同的矩阵,但是这些矩阵中的条目将不完全相同(即,某些条目在最坏的情况下可能会降低5%)。在这种情况下,比较它们以查看它们是否足够接近以至于被视为相同结果的最佳方法是什么?在此先感谢您的建议。


回答:
修改Edric的解决方案:

absTol = 1e-3; % You choose this value to be what you want! relTol = 0.05; % This one too! absError = x(:)-y(:); relError = absError./x(:); relError(~isfinite(relError)) = 0; % Sets Inf and NaN to 0 same = all( (abs(absError) < absTol) & (abs(relError) < relTol) ); 相同的变量将是假的,如果无论是绝对任何元素的相对误差小于公差无论您选择较大。另外,如果x的任何元素恰好是0,则relError的某些元素最终可能是无穷大或不是数字,因此我使用ISFINITE函数通过将它们设置为0来忽略这些值。

我不建议使用IMAGESC比较图,因为1)数据在显示时会缩放,2)显示器的颜色图具有离散数量的颜色值(我认为默认值为256,因此需要四舍五入) ),以及3)从两个图的视觉比较中,颜色的细微变化可能并不十分明显。



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 19:41


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.