MATLAB 은 1 년에 두 번 업데이트를 진행하고 이에 따라 a, b 버전을 release 합니다.

 

2016 년에는 2016a, 2016b 버전이 나왔죠.

 

2012a 버전부터 Simulink 모델 파일의 확장자가 MDL 에서 SLX 형태로 변경 됐습니다.

 

최신 버전에서는 하위 호환을 위해 MDL, SLX 를 둘 다 지원하고 있습니다.

 

그냥 MDL 파일을 그대로 사용해도 되지만 기왕이면 최신 버전으로 사용하기 위해 저는 과거에 만들었던 MDL 파일을 SLX 로 변환해서 사용하고 있습니다.

 

단순히 MDL 확장자를 SLX 로 변경하는건 탐색기를 통해서도 가능 하겠지만 이렇게 변환한 경우에는 해당 모델 파일이 정상적으로 동작하지 않습니다. 단순히 확장자만 바뀐게 아니기 때문이죠.

 

MDL 파일을 SLX 로 변경 할 때는 Simulink 에서 모델을 연 다음에 다른 이름으로 저장하기에서 확장자를 바꿔 줘도 되지만

 

다음과 같이 스크립트를 작성해서 변환하는게 훨씬 더 효율적입니다.

 

아래 스크립트는 현재 폴더내의 MDL 파일을 모두 SLX 파일로 변경하는 코드 입니다.

 

mdlFiles = dir('*.mdl');

 

for n=1:length(mdlFiles)

    modelName = strrep(mdlFiles(n).name, '.mdl', '')

    newName = strrep(mdlFiles(n).name, '.mdl', '.slx')

      

    load_system(modelName)

    save_system(modelName, newName)    

    close_system(modelName)

end

 

위 코드를 조금만 바꾸면 SLX 파일을 MDL 로 바꾸는 것도 그리 어렵지 않게 하실 수 있을 겁니다.


Simulink 사용시 보통 마우스를 사용하여 모델을 구성하곤 합니다.

 

하지만 이런 GUI 방식은 자동화를 위해서는 그리 좋은 방법은 아닙니다.

 

대량의 시스템 구성시 GUI 을 사용한 구성방식은 한없는 노가다일 수 있습니다.

 

단순 반복적인 작업들은 당연히 자동화를 해야 하고 이를 위해서는 Script 가 필수라고 할 수 있죠.

 

simulink 를 구성하기 위한 MATLAB 명령어들로는 add_block, add_line, new_system, open_system, delete_line, delete_block, replace_block, set_param 와 같은 명령어들이 있습니다.

 

new_system() 을 사용하여 Simulink 블록을 구성하고 open_system 명령어를 사용하여 해당 파일을 열 수 있습니다.

 

다음으로 add_block, add_line 함수를 활용하여 블록과 라인을 구성하고 delete_line, delete_block 함수를 활용하여 라인과 블록을 지울 수 있습니다.

 

다음으로 블록을 교체 하기 위해서는 replace_block 함수를 활용합니다.

 

위에 명령어들만 알면 기본적으로 Simulink 블록을 구성하는건 대부분 다 할 수 있을 것 같더군요.

 

마지막으로 set_param 함수를 사용하면 블록의 세세한 파라미터들을 설정 할 수 있습니다.

 

simulink 블록을 시뮬레이션 하는 명령어는 Sim() 이라는 명령어를 사용합니다.

 

아래 참고사이트에 나와 있는 예제를 실행해보면~ 아래 코드와 같습니다. Simulink 모델을 저장하기 위해 save_system 함수를 사용했습니다.



 

save_system 함수를 사용하여 모델을 저장하면 testModel.slx 라는 모델 파일이 만들어집니다.

 

위 코드를 실행해 보면 다음과 같은 Simulink 모델과 ~

 

다음과 같은 그래프를 MATLAB figure 그래프를 확인 할 수 있습니다.

 

참고 사이트

http://blogs.mathworks.com/seth/2010/01/21/building-models-with-matlab-code/

http://www.goddardconsulting.ca/simulink-creating-using-matlab-code.html


+ Recent posts