Posted at 2010/04/09 00:47 //
in 전자 공학/Matlab //
by downright
Matlab의 최종 결과물은 데이터 값 자체도 중요하지만, 이 결과를 그래프를 통해 한 눈에 보기 좋게 표현하는 것도 중요합니다. 이를 위해서 필요한 기능이 바로 주석(Annotating)과 관련된 함수(기능)들입니다.
matlab에서 그래프에 대한 주석 기능은 주로 figure 창 내의 툴바를 중심으로 설명하고 있습니다. 하지만 이 방법은 데이터 값이 변하지 않고, 처음 그려낸 결과가 최종 결과 일 때 편리하다고 할 수 있습니다. 데이터의 결과가 바뀔 때 마다(변수나 수치 변경에 의해) 새로 주석을 달아야 한다면, 상당히 불편한 일입니다.
저는 함수들을 이용해서 m-file 실행시 바로 주석이 달릴 수 있도록 설명하겠습니다.
주석에 대한 기능을 사용하기 전에 기본으로 사용할 그래프를 하나 그리도록 하겠습니다. Sin 파형을 1주기 동안 그리도록 아래와 같이 명령을 수행했습니다.
위 명령들을 수행하면 기본적인 파형이 그려집니다. 이제 본격적으로 주석을 달기 위한 함수들을 살펴보겠습니다. Label과 Title을 적어주겠습니다.(Insert -> xlabel, ylabel, title 을 이용하셔도 됩니다.)
사실 위 코드를 직접 m-file에 같이 작성하는 방법도 있지만, 배치에 대한 부분이나 글자 크기에 대한 짐작이 필요할 수 있습니다.
이 때는 Insert->에서 기능을 수행하고, figure 위에서 마우스 우측 버튼을 누른 뒤, Show M-Code를 수행해서 코드를 복사해서 이용하셔도 됩니다.
사실 이 방법을 응용하시면 툴바에서 이용한 기능들이 바로 m-code화 되기 때문에 제가 아래 설명하려는 것들이 필요 없을 수도 있습니다. ^^;;;
이 글은 어떻게 생각하면 주석을 위한 함수 자체의 설명 보다는 응용에 대한 설명을 하고자 했다는게 맞을 것 같습니다.
먼저, 이 삼각함수 그래프에서 최대값과 최소값에 점을 찍고 화살표를 그린 뒤 텍스트 박스를 이용해서 "최대값", "최소값"이 입력되도록 해보겠습니다. 최대, 최소 값을 찾아야 하기 때문에 max 함수와 min 함수를 사용해야 합니다.
이 값들을 이용해서 주석을 달아봅시다.
점을 찍어야 하기 때문에 hold on을 해주었습니다. 값 위치에 큰 점을 하나 찍어주고, textarrow를 이용해서 이름을 표시했습니다. 위치에 대한 비율을 얻기 위해 "get(gca,'propertyname')"을 사용하였습니다.
최종 결과로 얻어진 그래프는 위와 같습니다. 함수를 바꾸거나 축을 바꾸어도 최대값과 최소값을 향해 주석이 달려있는 것을 알 수 있습니다. 물론 지금 예시로 든 함수는 단순하기 때문에 쉽지만, 이런식으로 하면 된다는 예를 보이기 위함입니다.
p.s. 사실 위 코드를 짜면서 생각보다 비율에 대한 계산이 많아 비효율적일 수 있다는 생각도 들었습니다. 하지만 여러개의 변수에 대해서 그래프를 반복그려야 하고, 그 때마다 주석이 필요하다면 사람의 손을 덜어줄 수 있는 방법이라고 생각합니다. ^^.(위의 수행 결과물 m-file 첨부합니다.)
2010/04/12 20:54 [수정/삭제] [답글]
이렇게도 되는구나
방법 찾느라 고생좀 했는데
숙오~ ㅋㅋ
2010/04/12 21:12 [수정/삭제]
마우스로 하는 거에 비해서는 코드가 상당히 복잡하지만,
이런 것도 가능하다는 것을 말하고 싶었어...ㅋ