使用模拟时间执行功能

时间:2014-03-13 19:58:30

标签: function simulation getparameter

这可能是一个非常简单的问题,但我想在模拟运行时使用模拟时间来执行函数。例如,当模拟时间大于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

2 个答案:

答案 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
相关问题