if, elseif, else 语句将无法正确执行
if, elseif, else statement will not execute correctly
我目前正在编写一段代码,if, elseif, else
语句不会配合我。这是非常简单的代码,大部分只是我定义的常量:
K1 = 0.174532925;
K2 = 0.20943951;
y0 = [0.0 15.2161 0.0 0.0];
ieout = [];
if isempty(ieout)
if y0(1)>K1
ieout = [ieout 5];
elseif K1>y0(1)>-K1 && y0(2)<0
ieout = [ieout 1];
elseif -K1>y0(1)>-K2 && y0(2)<0
ieout = [ieout 2];
elseif -K1>y0(1)>-K2 && y0(2)>0
ieout = [ieout 3];
elseif K1>y0(1)>-K1 && y0(2)>0
ieout = [ieout 4];
end
end
现在,我的向量 y0
具有所有 zeroz
,除了第二个位置是正数,所以这意味着应该执行最后一个 elseif
语句。情况并非如此,而是执行最后一个语句之前的语句,我的向量 ieout
得到一个标量元素 3
而不是 4
.
这让我很困惑,为什么会这样?
您不能像 1<y<2
这样链接逻辑运算符。你必须使用 1<y && y<2
所以:
K1 = 0.174532925;
K2 = 0.20943951;
y0 = [0.0 15.2161 0.0 0.0];
ieout = [];
if isempty(ieout)
if y0(1)>K1
ieout = [ieout 5];
elseif K1>y0(1) && y0(1)>-K1 && y0(2)<0
ieout = [ieout 1];
elseif -K1>y0(1) && y0(1)>-K2 && y0(2)<0
ieout = [ieout 2];
elseif -K1>y0(1) && y0(1)>-K2 && y0(2)>0
ieout = [ieout 3];
elseif K1>y0(1) && y0(1)>-K1 && y0(2)>0
ieout = [ieout 4];
end
end
我目前正在编写一段代码,if, elseif, else
语句不会配合我。这是非常简单的代码,大部分只是我定义的常量:
K1 = 0.174532925;
K2 = 0.20943951;
y0 = [0.0 15.2161 0.0 0.0];
ieout = [];
if isempty(ieout)
if y0(1)>K1
ieout = [ieout 5];
elseif K1>y0(1)>-K1 && y0(2)<0
ieout = [ieout 1];
elseif -K1>y0(1)>-K2 && y0(2)<0
ieout = [ieout 2];
elseif -K1>y0(1)>-K2 && y0(2)>0
ieout = [ieout 3];
elseif K1>y0(1)>-K1 && y0(2)>0
ieout = [ieout 4];
end
end
现在,我的向量 y0
具有所有 zeroz
,除了第二个位置是正数,所以这意味着应该执行最后一个 elseif
语句。情况并非如此,而是执行最后一个语句之前的语句,我的向量 ieout
得到一个标量元素 3
而不是 4
.
这让我很困惑,为什么会这样?
您不能像 1<y<2
这样链接逻辑运算符。你必须使用 1<y && y<2
所以:
K1 = 0.174532925;
K2 = 0.20943951;
y0 = [0.0 15.2161 0.0 0.0];
ieout = [];
if isempty(ieout)
if y0(1)>K1
ieout = [ieout 5];
elseif K1>y0(1) && y0(1)>-K1 && y0(2)<0
ieout = [ieout 1];
elseif -K1>y0(1) && y0(1)>-K2 && y0(2)<0
ieout = [ieout 2];
elseif -K1>y0(1) && y0(1)>-K2 && y0(2)>0
ieout = [ieout 3];
elseif K1>y0(1) && y0(1)>-K1 && y0(2)>0
ieout = [ieout 4];
end
end