我正在尝试在SIMULINK中使用MatLab函数块。
模型如下所示:
在“time_calc”函数中,我想要操作变量“Sector”,如下面的代码所示
if sector == 1 || 2
sec = 1
elseif sector == 3 || 4
sec = 2
elseif sector == 5||6
sec = 3
elseif sector == 7||8
sec = 4
elseif sector == 9||10
sec = 5
elseif sector == 11 || 12
sec = 6
end
下面是作用域,您可以看到“Sector”的值从0到12变化,然后不断重复
但我得到的“sec”的值是常量“1”(如下图所示)(可能是因为它将第一个“1”求值为布尔值TRUE,并且只反复运行该语句)
如何纠正它?
3条答案
按热度按时间ldxq2e6h1#
if sector == 1 || 2
计算sector == 1
,如果为真,则语句为真。如果为FALSE,它将计算2
,而2
始终为真,因此语句始终为真。您想要写的是
if sector == 1 || sector == 2
。您也可以将其编写为if any(sector == [1, 2])
。guicsvcw2#
您的功能相当于:
@Cris Luengo的回答说明了为什么您的代码是错误的。但我建议你用这一行来改变整个事情,这要清楚得多。
fgw7neuy3#
去掉其他的,全部替换为Just If