matlab 开关功能未按我的要求运行

g9icjywg  于 2022-12-04  发布在  Matlab
关注(0)|答案(1)|浏览(360)

我写了一个简单的程序来帮助计算一个概率问题。在一天中的10个小时内,某个事件的概率与一天中的其他时间不同。为了解释这个问题,我试图使用开关函数,但它不起作用。代码如下(我使用MATLAB):

clear all
status = 0;      %0 ventilador apagat, 1 encès.
nsim = 10000;
enceses = 0;
runtime = 0;
sampletime = 0;
minute = 0;
while (runtime < 10000 || enceses < 18000)
    r = rand;
    switch minute
        case minute < 601
            if (r < 0.1642)
                status = 0;
            else
                runtime = runtime + 5/60;
                if status == 0
                    status = 1;
                    enceses = enceses + 1;
                else
                end
            end
            sampletime = sampletime + 5/60;
            minute = minute + 5;
        case minute > 600
            if (r < 0.801)
                status = 0;
            else
                runtime = runtime + 5/60;
                if status == 0
                    status = 1;
                    enceses = enceses + 1;
                else
                end
            end
            sampletime = sampletime + 5/60;
            minute = minute + 5;
            if minute == 1440
                minute = 0;
            end
    end
end
enceses
runtime
sampletime

nsim目前不执行任何操作
我一步一步地分析了执行过程,发现在第一个循环中,开关按预期工作并进入第一个case,但在此之后,它既不进入,也不进入,如果我输入一个否则的print(“error”),它只会打印出一堆错误。

tf7tbtn2

tf7tbtn21#

对于您的应用程序,您可以使用if-elseif-end陈述式来取代switch-case,如下所示:

if minute < 600
   <some statements>
elseif minute >= 600
   <another statements>
end

相关问题