我正在使用if-else
语句计算数字。我得到了结果,但它只执行了else部分,而没有查看其他部分。
这是我正在使用
的代码i = 0;
j = 0;
if sum( abs( f1(:) - f2(:))) == 0.0
i = i + 1;
else
j = j + 1;
end
if sum(abs(f2(:) - f3(:))) == 0.0
i = i + 1;
else
j = j + 1;
end
if sum(abs(f3(:) - f4(:))) == 0.0
i = i + 1;
else
j = j + 1;
end
msgtext = sprintf('Matching = %d',i);
h = msgbox(msgtext);
msgtxt = sprintf(' Not Matching = %d',j);
h = msgbox(msgtxt);
有什么建议吗?
提前致谢!
答案 0 :(得分:3)
你的问题非常含糊不清,所以我假装你只是问过其中一个if
:
if sum( abs( f1(:) - f2(:))) == 0.0
i = i + 1;
else
j = j + 1;
end
我认为你很有可能只会陷入else
条款,因为你试图将浮点数等同起来,由于精度错误,这是一个坏主意。这取决于f1
和f2
的性质,它们是否会加倍,计算结果如何在您的问题中没有给出任何指示。如果您想了解为什么不能将浮点数等同(或者期望差异等于0
),那么您必须阅读What every computer scientist needs to know about floating-point arithmetic
而是尝试if sum( abs( f1(:) - f2(:))) < tol
其中tol
(即容差)是一个非常小的数字(例如eps
,但只需选择一个比您的应用程序产生的数量级小的数字。 )。