在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函数条件循环模块”设计指点迷津
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