我是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功能块兼容,还是有任何方法实现这一目标?
答案 0 :(得分:0)
您可能希望if t > 0
代替while t > 0
。 Simulink已经有了计时器循环,它会在每个时间步fcn
调用你的函数t
。你不想在那里开始你自己的循环。