在simulink里编写一个S函数条件循环模块

在simulink里编写一个S函数模块,该模块输出初始值为output=0,模块输入值input可能为0也可能为1,当input=1时,output本身自加1并输出,输出值经过一系列运算再影响输入值0或1的变化,若output仍为1,则继续自加1并输出,当input=0时,自加停止。希望高人能在“S函数条件循环模块”设计指点迷津
在simulink里编写一个S函数模块,该模块输出初始值为output=0,模块输入值input可能为0也可能为1,当input=1时,output本身自加1并输出,输出值经过一系列运算再影响输入值0或1的变化,若input仍为1,则继续自加1并输出,当input=0时,自加停止。希望高人能在“S函数条件循环模块”设计指点迷津

  Simulink的S函数中让一个变量只在第一次赋初值:s函数中有初始设置。
  Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点Simulink已被广泛应用于控制理论和数字信号处理的复杂仿真和设计。同时有大量的第三方软件和硬件可应用于或被要求应用于Simulink。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-02
我晕,循环啥,你作成两个输入,把输出接到一个输入,不就行了追问

input输入为1,则output自身加1并输出,输出值必然影响输入值input,输出之后,若input值仍为1,则继续output自身加1并输出,直至输出之后,input变为0,output停止自加并输出。简单地说就是,设计一个s函数循环,输入为1则输出自加,若输入为0,则停止自加,希望您能在这个“条件循环模块”设计这块给出详细的讲解,在这先谢啦!

追答

既然选择用simulink,你肯定是要考虑时序的,像这种每次访问输入端口再作处理的,跟时序关系很大,一般每个仿真步长获取一次输入端口的值,如果还要根据当前的输出来处理,(这种情况叫直接馈通)在时候在sfunction里面写循环,很容易引起代数环,是最好要避免的。除非你的循环跟输入值没有关系,比如你要对输入值作n次处理,可以n循环。所以你最好不要用循环,你可以这样写sfunction

if (b[0] == 1)

        y0[0] = 0;

else

{ if (a[0] == 1)

        y0[0] = c[0]+1;

   else

        y0[0] = c[0];

}

 

这样连接,

一切ok

本回答被提问者采纳
相似回答