0

我对 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 功能块兼容,或者有什么方法可以实现这一点?

4

1 回答 1

0

您可能想要 do doif t > 0而不是while t > 0. Simulink 已经有计时器循环,它会fcn在每个时间步调用您的函数t。您不想在其中开始自己的循环。

于 2013-10-04T17:29:40.957 回答