matlab中If else语句中只执行else部分
我正在使用matlab中If else语句中只执行else部分,matlab,if-statement,Matlab,If Statement,我正在使用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.
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
s:
if sum( abs( f1(:) - f2(:))) == 0.0
i = i + 1;
else
j = j + 1;
end
我认为很有可能你只会陷入else
子句,因为你试图将浮点数相等,这是一个坏主意,因为存在精度错误。这取决于f1
和f2
的性质,它们是否是双倍的,如何计算等,您在问题中没有给出任何指示。如果您想理解为什么不能将浮点数相等(或者期望差值等于0
),那么您必须阅读
如果sum(abs(f1(:)-f2(:)
tol
(即公差)是一个非常小的数字(例如eps
,但只需选择一个比应用程序能产生的数量级小的数字即可)。可能会对您有所帮助。@Divakar我也试过了。但它不起作用。我们回答者试图做到透视,但它不起作用。你想用sum(abs(f1(:)-f2(:)==0.0
)实现什么?你只是在检查向量是否相同吗?如果是这种情况,请使用isequal(f1,f2)
,尽管根据f
矩阵的性质,您可能仍然会面临浮点精度截断的问题,在这种情况下,请参见我的答案。顺便说一句,这个问题陈述得很糟糕,请阅读。我建议您不要使用糟糕的变量名I
和j
,而是选择一些表达其含义的东西,如count\u match
和count\u not\u match