如何在Matlab功能块中实现定时循环

如何在Matlab功能块中实现定时循环,matlab,function,loops,block,simulink,Matlab,Function,Loops,Block,Simulink,我对MatlabSimulink非常陌生,我试图在Matlab功能块中实现一个循环,该循环在整个仿真过程中不间断地进行。 输入: 从一个简单的时钟“t”,使它继续下去,直到模拟持续 “v”和“i”是什么给出了一个特定的“p*”值,通过稍微改变输出“D”,我想检查这个“p*”值是变大还是变小(在整个模型中,“v”和“i”受“D”的影响) 功能块说它是正确的,但当我开始运行它时,它冻结了。我想做的下一步(但一直没有做到)是在它里面放一个小计时器,执行这个循环,比如说每0.01秒或者什么的。这是否与M

我对MatlabSimulink非常陌生,我试图在Matlab功能块中实现一个循环,该循环在整个仿真过程中不间断地进行。 输入:

从一个简单的时钟“t”,使它继续下去,直到模拟持续

“v”和“i”是什么给出了一个特定的“p*”值,通过稍微改变输出“D”,我想检查这个“p*”值是变大还是变小(在整个模型中,“v”和“i”受“D”的影响)


功能块说它是正确的,但当我开始运行它时,它冻结了。我想做的下一步(但一直没有做到)是在它里面放一个小计时器,执行这个循环,比如说每0.01秒或者什么的。这是否与Matlab功能块兼容,或者是否有任何方法可以实现这一点?

如果t>0而不是t>0时,您可能希望执行
。Simulink已经有了计时器循环,它将在每个时间步
t
调用您的函数
fcn
。您不想在其中启动自己的循环。

没有中断,没有T增量?您是否考虑过
If action子系统
块和
While迭代器子系统
块?它们使用起来非常方便。你会冻僵,因为你有一个无限循环。在t>0的第一个模拟时间步,当调用此块时,它将永远不会退出while循环。
function D = fcn(v,i,t)
%#codegen
p1 = v*i;
D = 0.5;
D = D + 0.05;

while t > 0

p2 = v*i;

if p1 > p2 
  D = D - 0.05;

else
  D = D + 0.05;

end;

p1 = p2;

end;