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

时间:2013-10-04 16:36:31

标签: matlab function loops block simulink

我是Matlab Simulink的新手,我正在尝试在Matlab功能块中实现一个在整个模拟过程中不间断的循环。 输入:

“t”来自一个简单的时钟,直到模拟持续为止。

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

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;

功能块说它是正确的,但是当我开始运行时,它会冻结。我想做的下一步(但从未到过那里)是在其中加入一个小计时器,执行这个循环让我们说每0.01秒或其他什么。这是否可以与Matlab功能块兼容,还是有任何方法实现这一目标?

1 个答案:

答案 0 :(得分:0)

您可能希望if t > 0代替while t > 0。 Simulink已经有了计时器循环,它会在每个时间步fcn调用你的函数t。你不想在那里开始你自己的循环。