[英]Only else part is being executed in If-else statement in matlab
我正在使用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);
有什么建議?
提前致謝!
您的問題非常含糊,所以我將假裝您只詢問了if
之一:
if sum( abs( f1(:) - f2(:))) == 0.0
i = i + 1;
else
j = j + 1;
end
我認為您很有可能只陷入else
子句,因為您試圖將浮點數等同起來,由於精度錯誤,這是一個壞主意。 這取決於f1
和f2
的性質,它們是雙倍的,你在問題中沒有給出的計算等是如何計算的。 如果您想了解為什么不能將浮點數等同起來(或期望差值等於0
),那么您必須閱讀 每個計算機科學家都需要了解的有關浮點運算的知識
而是嘗試if sum( abs( f1(:) - f2(:))) < tol
其中tol
(即容差)是一個非常小的數字(例如eps
,但只需選擇一個數量級小於您的應用程序的數字即可生產。)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.