![]() |
在Matlab中比较两个矩阵
我有两个矩阵x和y,它们都是来自应该计算相同结果的不同算法/例程的结果。虽然我知道isequal()会检查x和y是否为相同的矩阵,但是这些矩阵中的条目将不完全相同(即,某些条目在最坏的情况下可能会降低5%)。在这种情况下,比较它们以查看它们是否足够接近以至于被视为相同结果的最佳方法是什么?在此先感谢您的建议。
回答: 修改[URL="https://stackoverflow.com/questions/938260/comparing-two-matrices-in-matlab/938474#938474"]Edric的[/URL]解决方案: 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) ); [B]相同[/B]的变量将是假的,如果[I]无论[/I]是绝对[I]或[/I]任何元素的相对误差小于公差无论您选择较大。另外,如果[B]x的[/B]任何元素恰好是0,则[B]relError的[/B]某些元素[B]最终[/B]可能是无穷大或不是数字,因此我使用[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/isfinite.html"]ISFINITE[/URL]函数通过将它们设置为0来忽略这些值。 我不建议使用[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/imagesc.html"]IMAGESC[/URL]比较图,因为1)数据在显示时会缩放,2)显示器的颜色图具有离散数量的颜色值(我认为默认值为256,因此需要四舍五入) ),以及3)从两个图的视觉比较中,颜色的细微变化可能并不十分明显。 [url=https://stackoverflow.com/questions/938260]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 23:19。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.