2014-03-13 81 views
0

這可能是一個非常簡單的問題,但我想使用仿真時間來在仿真運行時執行功能。例如,當仿真時間大於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 
+1

語言是什麼呢? – Schollii

+0

這是Matlab語言。 – Bensa

+0

您是否嘗試過打印計時器? – Schollii

回答

0

我不使用MATLAB,但有一點我注意到的是,腳本執行循環,絕不讓步。這對我來說會表明該腳本將一次運行,而不是在每一幀都重複調用。假設這個腳本被執行一次,我推測你會註冊一個callback在每個時間步執行,見TimerFcn。在此回調中,您檢查計時器並採取相應措施。也有Timer Callback Functions,但我不能分辨它是否相關,因爲代碼與您的代碼完全不同。

0

產生你可以用pause()命令解決。

我看到只有將時鐘塊導出到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