这可能是一个非常简单的问题,但我想在模拟运行时使用模拟时间来执行函数。例如,当模拟时间大于14秒(or >=14 & <20 s)
时,则更改参数值。请帮帮我,以下代码没有做任何事情。感谢。
a=0;
set_param('model','SimulationCommand','Start');
b=0;
for i=1:1:500000 % 1ms sampling rate
timer(:,1)=get_param('model','SimulationTime');
if timer>=14
a=1;
b=1;
end
end
答案 0 :(得分:0)
我没有使用matlab,但我注意到的一件事是脚本执行循环并且永远不会产生。对我来说,这表明脚本将一次运行,而不是在每一帧重复调用。假设此脚本执行一次,我假设您将在每个步骤注册一个callback,请参阅TimerFcn。在此回调中,您检查计时器并相应地采取措施。还有Timer Callback Functions,但我无法判断它是否相关,因为代码与您的代码完全不同。
答案 1 :(得分:0)
让你可以用pause()命令解决。
我只看到将Clock块导出到Matlab变量的方法。然后使用您的变量进行检查。
无论如何,你的方法似乎是可行的:
>> load_system('MySystem.mdl');
>> get_param('MySystem','SimulationTime')
ans =
1
>> set_param('ItFixBody', 'SimulationCommand', 'Start');
>> get_param('ItFixBody','SimulationTime')
ans =
2.4800
>> get_param('ItFixBody','SimulationTime')
ans =
3.0500
>> get_param('ItFixBody','SimulationTime')
ans =
3.5800
>> get_param('ItFixBody','SimulationTime')
ans =
3.9800