요즘은 굉장히 다양한 오픈소스 프로그램들이 있습니다. 


수치 분석에 주로 MATLAB 을 사용하곤 했지만 요즘은 MATLAB 을 꼭 써야 하는 것들이 아니라면 Python 을 주로 사용하고 있습니다.


회사에서는 차량용 MBD(Model Based Development) 개발을 위해 Simulink 환경에서 Stateflow 툴박스를 주로 활용하는데


모델링의 일부는 Stateflow API 를 사용하여 MATLAB 스크립트를 통해 자동으로 모델을 구성하는 작업을 하곤 합니다.


모델링 구성후에는 당연히 simulation 을 수행하고 simulation 을 마치면 Embedded Coder 를 사용하여 MATLAB 알고리즘/Simulink 모델에 대해 C 코드 생성후 타겟 보드에서 테스트를 진행 합니다.


위와 같은 작업들은 MATLAB/simulink 를 꼭 써야 하는 작업이므로 사용을 하지만, 제어기 로직 설계 하는 것 이외의 다른 분야들에서는 주로 Python 을 사용하고 있습니다.


Python과 같은 프로그램들은 오픈소스 프로그램이라 누구나 사용할 수 있으니 협업시에도 편한것 같네요.


Python 에서도 MATLAB 과 같이 예쁜 그래프들을 표현 할 수 있는데 matplotlib 모듈을 사용하시면 됩니다.


matplotlib 모듈의 홈페이지는 아래와 같습니다. 


https://matplotlib.org/gallery/index.html


위 주소에 들어가 보시면 다양한 그래프 예제들이 있습니다.


하니씩 실행해 보시는것도 재미 있을 겁니다. MATLAB 에 익숙하신 분들은 코드를 이해하는것도 조금더 편할 것 같네요.


matplotlib 는 Anaconda 를 설치하면 기본적으로 설치가 됩니다. 예전에 아래 포스팅에서는 각 모듈들을 하나하나 찾아가며 설치 했었는데


http://iamaman.tistory.com/377


그냥 간편하게 Anaconda 를 설치해서 사용하시는게 정신건강에 이롭더군요.


저도 그래프 하나 그려 봤는데~~ 다음과 같이 코딩을 하면 그래프를 쉽게 그릴수 있습니다.


MATLAB 에서 그래프 그리는것과 유사하죠~ savefig() 함수를 사용하면 아래와 같이 그림으로 저장도 할 수 있습니다. 

matplotlib 의 메뉴얼은 아래 주소에서 확인 할 수 있습니다. 


https://matplotlib.org/tutorials/index.html


MATLAB 에서 Figure 창에 대해 그림 파일로 저장 할 때는 Figure 의 File → Save As 에 들어가서~~

 

아래 그림과 같이 다양한 포맷으로 그림 파일을 저장 할 수 있습니다.

 

몇 개 안 되는 Figure 창에 대해 그림 파일로 저장할 때는 아래 그림과 같이 수동으로 하겠지만 다수의 Figure 창에 대해 그림으로 저장할 때는 아무래도 명령어를 사용하는 게 편리 합니다.




 

MATLAB 에서 Figure 창을 그림으로 저장 할 때는 saveas 라는 명령어를 사용합니다.

 

http://www.mathworks.co.kr/kr/help/matlab/ref/saveas.html

 

위 주소의 설명에 나와 있듯이 saveas 를 이용하면 다음 확장자의 그림 파일로 저장 할 수 있습니다.

 

ai, bmp, emf, eps, fig, jpg, m, pbm, pcx, pdf, pgm, png, ppm, tif

 

기본적인 사용방법은 다음과 같습니다.

 

saveas(h,'filename.ext')

 

위 기본형에서 h 는 graphic handle 을 말 합니다. graphic handle이 뭔지 잘 모르겠다 하시는 분은 아래 포스팅을 참조 바랍니다. 


2011/05/25 - [programming language/MATLAB] - MATLAB Graphic handle

 

간단하게 현재의 Figure 창에 대해 PDF 파일로 저장하고 싶다면~ 아래와 같이 명령하면 됩니다. 아래 명령어에서 gcf 는 현재 열려 있는 Figure 창에 대한 graphic handle 입니다.

 

saveas(gcf,'Test.pdf')



MATLAB 그래프를 좀 더 효율적으로 또는 다양하게 변화 시키고 싶다면, graphic handle 에 대해 아셔야 합니다.

 

일단 다음과 같은 y = x 그래프를 하나 그려보죠.


 



x=1:10; y=1:10;

h_graphic=plot(x,y);

 

다음과 같은 그래프가 나오죠.

 

 

 

 

위 코드의 h_graphic 이 바로 이 그래프 선의 handle 입니다.

 

h_graphic 에는 그래프에 대한 다양한 property 들이 들어 있고 현재의 설정 상태를 확인 할 때는 get(h_graphic) 명령어를 통해 확인 할 수 있습니다.

 

command 창에 다음과 같이 설정 상태가 나옵니다.

 

 


 
 

그럼 간단하게 set() 명령어를 이용하여 YData 를 다음 코드처럼 변경해 보죠.

 

set(h_graphic, 'Ydata',[1:10]*2)

 

set() 명령어를 이용하여 handle 의 property를 변경 할 때는 set(handle, 'property name', 변경할 값)의 형태로 넣어 주면 됩니다.

 

property name 은 구분만 되면 일부만 써도 상관이 없습니다.

 

즉 위의 코드는 다음과 같이 써도 무방합니다.

 

set(h_graphic, 'yd',[1:10]*2)

 

위 코드에 의해 y=2*x 형태의 그래프가 된 것을 확인 할 수 있습니다.

 

 




 

MATLAB 의 핸들 값들은 double class 의 값들로 되 있습니다.

 

h_graphic 을 command 창에 타이핑 해보면 다음과 같은 결과가 나옵니다.

 

 

현재 figure 창의 handle 은 gcf 라는 키워드를 통해 알 수 있습니다.

 

 

현채 axis 의 handle 은 gca 라는 키워드를 통해 알 수 있습니다.

 

 

 

다음 코드를 통해 h_graphic의 parent, 즉 상위 handle 이 무엇인지를 확인 할 수 있습니다.

 

 
 

위에서 확인한 현재의 axis handle 이 h_graphic의 parent handle 이라는 것을 확인 할 수 있죠.



 

그래프의 각 object 를 직접 선택하여 handle 값을 구할 수도 있습니다.

 

즉 내가 바꾸고자 하는 부분이 어떤 핸들인지 용어를 알지 못해도 직접 그래프에서 선택해서 handle 을 알 수 있다는 것입니다.

 

다음 그림처럼 커서 버튼(Edit Plot)을 클릭 후에 흰색 바탕 부분을 선택합니다.

 

 

 

 

그리고 command 창에 gco 를 타이핑 하면 현재 선택한 object 의 handle 을 알려 줍니다.

 

 

위 command 결과를 보면 위 그림에서 선택한 부분이 바로 axis handle 부분이라는 것을 알 수 있습니다.


+ Recent posts