簡體   English   中英

在matlab的If-else語句中只執行else部分

[英]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子句,因為您試圖將浮點數等同起來,由於精度錯誤,這是一個壞主意。 這取決於f1f2的性質,它們是雙倍的,你在問題中沒有給出的計算等是如何計算的。 如果您想了解為什么不能將浮點數等同起來(或期望差值等於0 ),那么您必須閱讀 每個計算機科學家都需要了解的有關浮點運算的知識

而是嘗試if sum( abs( f1(:) - f2(:))) < tol其中tol (即容差)是一個非常小的數字(例如eps ,但只需選擇一個數量級小於您的應用程序的數字即可生產。)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM