【发布时间】:2013-10-04 16:36:30
【问题描述】:
我对 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 功能块兼容还是有什么方法可以实现?
【问题讨论】:
-
没有中断,没有 T 增量?
-
您考虑过
If-action subsystem块和While iterator subsystem块吗?它们使用起来非常方便。 -
你冻僵了,因为你有一个无限循环。在 t > 0 的第一个仿真时间步,调用此块时,它永远不会退出 while 循环。
标签: matlab function loops block simulink