2014-03-13 3 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