【发布时间】:2014-08-15 00:35:13
【问题描述】:
如何从 simulink 中的“时钟”块中获取 simulink 时间,然后增加一个计数器 (k) 在每个采样周期 Ts 的 matlab 嵌入式函数中?
假设simulink时钟时间为t,那么我们可以考虑
if mod(t, Ts)==0
k=k+1;
end
但这不起作用,因为 simulink 时间是可变的。 任何的想法?谢谢。
【问题讨论】:
如何从 simulink 中的“时钟”块中获取 simulink 时间,然后增加一个计数器 (k) 在每个采样周期 Ts 的 matlab 嵌入式函数中?
假设simulink时钟时间为t,那么我们可以考虑
if mod(t, Ts)==0
k=k+1;
end
但这不起作用,因为 simulink 时间是可变的。 任何的想法?谢谢。
【问题讨论】:
我假设您只对可变步长求解器执行此操作感兴趣。让我们假设您的采样时间是每两秒一次,您的求解器是ode23t,模拟运行十秒。然后,您希望变量的值为 5。
现在,您设置模型的方式如下面的屏幕截图所示。 Constant 是您的采样时间,时钟是时间的来源。您需要一个 Rate Transition 模块来确保非周期性时钟输入的周期性输出。我已经为它设置了采样时间 1。
最后,在您的代码中,您需要一个persistent 变量。您也可以使用 Simulink 的 Data Store Read 和 Write 模块,但这对我来说似乎更简单。
【讨论】: