如果构造,Matlab 脚本不评估有效
Matlab script does not evaluate valid if construction
我有一个二维点 vectorA
和一个带有边界 vectorX
和 vectorY
的矩形。以下MWE代表我的MATLAB代码检查点是否在连续的四个边界上:
vectorA=[1.6667 2];
vectorX=[0 1.6667];
vectorY=[2 3.3333]
if vectorA(1)==vectorX(1)
disp('XL')
end
if vectorA(1)==vectorX(2)
disp('XU')
end
if vectorA(2)==vectorY(1)
disp('YL')
end
if vectorA(2)==vectorY(2)
disp('YU')
end
我遇到过函数没有检测到给定坐标位于边界上的情况。我打印了变量的内部值,尽管我有 if 1.6667==1.6667
,但未评估 if
。
手动执行我的脚本的连续计算工作正常(包括 1.6667==1.6667
产生 1
),但执行脚本会给出错误的结果。我在哪里可以找到这种奇怪行为的原因?
答案很可能在于数字的视觉表示。
我的意思是您 看到 值是 1.6667
但值(可能)是 1.666641239012783482983742987
(只是随机输入)。
要玩弄表示,请检查 format
命令。首先输入命令 window format long e
并再次检查。
我有一个二维点 vectorA
和一个带有边界 vectorX
和 vectorY
的矩形。以下MWE代表我的MATLAB代码检查点是否在连续的四个边界上:
vectorA=[1.6667 2];
vectorX=[0 1.6667];
vectorY=[2 3.3333]
if vectorA(1)==vectorX(1)
disp('XL')
end
if vectorA(1)==vectorX(2)
disp('XU')
end
if vectorA(2)==vectorY(1)
disp('YL')
end
if vectorA(2)==vectorY(2)
disp('YU')
end
我遇到过函数没有检测到给定坐标位于边界上的情况。我打印了变量的内部值,尽管我有 if 1.6667==1.6667
,但未评估 if
。
手动执行我的脚本的连续计算工作正常(包括 1.6667==1.6667
产生 1
),但执行脚本会给出错误的结果。我在哪里可以找到这种奇怪行为的原因?
答案很可能在于数字的视觉表示。
我的意思是您 看到 值是 1.6667
但值(可能)是 1.666641239012783482983742987
(只是随机输入)。
要玩弄表示,请检查 format
命令。首先输入命令 window format long e
并再次检查。