시뮬레이션 속도 높이기
시뮬레이션을 늦추는 요인에는 몇 가지가 있습니다. 모델에 대해 다음과 같은 조건을 검사하십시오.
모델에 Interpreted MATLAB Function 블록이 포함되어 있습니다. 모델에 Interpreted MATLAB Function 블록이 포함되어 있으면 MATLAB® 실행 엔진이 매 시간 스텝마다 호출되어 시뮬레이션 속도가 크게 느려집니다. 가능하면 Math Function 블록을 사용하십시오.
모델에 MATLAB 파일 S-Function이 포함되어 있습니다. MATLAB 파일 S-Function도 매 시간 스텝마다 MATLAB 실행 엔진을 호출합니다. S-Function을 서브시스템이나 C-MEX 파일 S-Function으로 변환해 보십시오.
모델에 Memory 블록이 포함되어 있습니다. Memory 블록을 사용하면 가변 차수 솔버(
ode15s및ode113)가 매 시간 스텝마다 차수 1로 재설정됩니다.최대 스텝 크기가 너무 작습니다. 최대 스텝 크기를 변경했다면 디폴트 값(
auto)을 사용하여 시뮬레이션을 다시 실행해 보십시오.정확도 요구 사항이 너무 높습니다. 일반적으로 디폴트 상대 허용오차(정확도 0.1%)면 충분합니다. 0이 되는 상태를 가진 모델의 경우 절대 허용오차 파라미터가 너무 작으면 시뮬레이션이 0에 가까운 상태 값에서 너무 많은 스텝을 수행할 수 있습니다. 이 오류에 관한 자세한 내용은 Maximum order를 참조하십시오.
시간 스케일이 너무 깁니다. 시간 간격을 줄이십시오.
모델이 경직성 시스템을 나타내지만, 비경직성 솔버를 사용하고 있습니다.
ode15s를 사용해 보십시오. 자세한 내용은 Stiffness of System 항목을 참조하십시오.모델이 서로 배수가 아닌 샘플 시간을 사용합니다. 서로 배수가 아닌 샘플 시간을 혼합하면 솔버가 모든 샘플 시간에 대해 샘플 시간이 적중될 수 있을만큼 작은 스텝을 취하게 됩니다.
모델에 대수 루프가 포함되어 있습니다. 대수 루프의 해는 매 시간 스텝마다 반복적으로 계산됩니다. 따라서 성능을 크게 저하시킵니다. 자세한 내용은 대수 루프 개념 항목을 참조하십시오.
Model 블록에 대해 다음 조건을 검사할 수 있습니다.
모델이 Random Number 블록을 Integrator 블록으로 전달합니다. 연속 시스템의 경우 Sources 라이브러리에 있는 Band-Limited White Noise 블록을 사용하십시오.
모델에 포함되어 있는 Scope 뷰어가 너무 많은 데이터 점을 표시합니다. 성능에 영향을 줄 수 있는 뷰어 속성 설정을 조정해 보십시오. 자세한 내용은 Scope Viewer 항목을 참조하십시오.
모델을 반복적으로 시뮬레이션해야 합니다. 반복마다 조정 가능형 파라미터를 변경하지만 모델을 구조적으로 변경하지는 않습니다. 매 반복마다 모델을 다시 컴파일해야 하므로 전반적인 시뮬레이션 시간이 증가합니다. 빠른 재시작을 사용하여 반복 시뮬레이션을 수행하십시오. 이 워크플로에서는 모델이 한 번만 컴파일되고 반복 시뮬레이션은 단일 컴파일 단계에 연결됩니다. 자세한 내용은 How Fast Restart Improves Iterative Simulations 항목을 참조하십시오.