MATLAB如何编写具有2个条件的for循环,一个条件是“ ==”,另一个条件是“〜=”?

时间:2019-11-21 02:38:58

标签: matlab simulink

我正在尝试用Simulink编写一个S函数,其中输入“ t”表示时间,输入“ LIBs”表示进入系统的物料量。有2个输出。 Simulink中的想法就是这样。 Simulink model concept

我想做的是,在特定的时间迭代中,输入“ LIB”转到另一个输出。但是在迭代过程中,有一些特殊的地方,我不想让输入进入任何输出。

代码如下:

MATLAB

function [Batts_Spent, Batts_N_Spent] = BattsL6Y(t, LIBs)
for t = 2011:6:2035 
    if t ~= 2005:10:2035
        Batts_Spent = LIBs;
    end
end
for t = 2015:10:2035 
    if t ~= 2005:6:2035
        Batts_N_Spent = LIBs;
    end
end
for t = 2011:6:2035 
    if t == 2015:10:2035
        Batts_Spent = LIBs;
    end
end
end

我确定此代码不正确,但是我不知道如何正确编写。

而且,即使我有多个输入和输出端口,Simulink项目中的S-Function块仍仅保留一个输入和输出端口。我应该将其更改为MATLAB Function模块吗?

1 个答案:

答案 0 :(得分:0)

在您的情况下,t是一个输入参数,因此看起来好像为每个t值调用了该函数。然后,您将循环遍历t的所有值。考虑到您的图像,您根本不需要循环。您可以将ifmod结合使用。例如:

function [Batts_Spent, Batts_N_Spent] = BattsL6Y(t, LIBs)
if mod(t-2005,6)==0 && t>=2005
  Batts_Spent = LIBs;
end
end

这只是“每6次将LIB的值分配给第一个输出”。这不是最终的解决方案,但足以让您入门。像这样,您需要一秒钟用于其他输出。