如何在if-Else语句中将“1”作为整数,而不是在MatLab中作为布尔值?

rur96b6h  于 2022-11-15  发布在  Matlab
关注(0)|答案(3)|浏览(179)

我正在尝试在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,并且只反复运行该语句)

如何纠正它?

ldxq2e6h

ldxq2e6h1#

if sector == 1 || 2计算sector == 1,如果为真,则语句为真。如果为FALSE,它将计算2,而2始终为真,因此语句始终为真。
您想要写的是if sector == 1 || sector == 2。您也可以将其编写为if any(sector == [1, 2])

guicsvcw

guicsvcw2#

您的功能相当于:

sec=ceil(sector/2)

@Cris Luengo的回答说明了为什么您的代码是错误的。但我建议你用这一行来改变整个事情,这要清楚得多。

fgw7neuy

fgw7neuy3#

去掉其他的,全部替换为Just If

相关问题