Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab中If else语句中只执行else部分_Matlab_If Statement - Fatal编程技术网

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