ef84d281ed8584d2f5a0ce13f190d6fc.jpg

안녕하세요? LGS입니다. 오랫만에 강의를 올리는 군요....
오늘은 그래프를 그리는 법을 배워보도록 하겠습니다.
우선 기본적인 2차원 평면 그래프 부터

>>x =  linspace(0,10,100); %0부터 10까지 100개의 element를 갖는 vector를 생성합니다.
>>y1= sin(x);
>>y2= cos(x);
>>plot(x,y1,'r',x,y2,'b:');

7SGHIL8-8Z1-LnQ1tDlBpN-PmDM2SmxZZrfYyCMS_UpcyTmitdNvkvAMCf_5Sek9XBuF1apo9VShPQVX_eb1r8UMguw_1SPwyCYVBUotBE0BIJUqCsY

plot 함수는 평면 그래프를 그려줍니다. 입력변수로는..
plot(x축 데이터, y축 데이터, 색깔_라인스타일_마커타입)

TwUJNo0OJ2fgaFbF7P8Ip42UDetUMxcSsxKIN8voaEtbbN7RUBzfo-1uuUf0voMbBu5bOO6e0OU1VF6zcpeYmJ5fbWjLTxdrGyzlPSdsXg0OQrDADIE

마커는 데이터가 있는곳을 말합니다.
위의 표의 3가지의 조합으로 여러가지 선모양의 평면 그래프를 그릴 수 있습니다.
그럼 plot(x,y1,'g:o') 는 어떻게 그려질까요? 순서가 색깔_라인스타일_마커타입 이니까... 
위의 표를 참조하면 색은 초록색(g)이고 라인스타일은 점(:)으로 되어 있고 마커는 채워지지 않은 동그라미(o)이겠군요.
사실 순서는 상관없습니다. g:o 이든 og: 이든 똑같은 그래프를 그려 줍니다.

그래프에 제목도 붙여 보고요
>>title('Sine and Cosine graph');

x,y축 이름도 붙여봅시다
>>xlabel('x');
>>ylabel('y');

눈금선도 그려넣고~
>>grid on

범례도 넣어 봅시다
>>legend('sin(x)','cos(x)')

Jzu7VepUtCYfECakcfkZtKe3aLPyCuW89fxr7LzETOxUIztMwYB2YiLsb7QuR06c8zb8v6gFF-3icPAKrj-2Zs9kCRyhQyCmiOyLF45o4NvqgTp0b50

그런데 x축과 y축의 비율이 영 맞질 않군요.냠...
>>axis equal

알흠답게 그래프가 그려졌습니다. 평면 그래프를 그릴 때 plot이라는 함수를 사용하는 것이기 때문에 
함수의 개념을 잘 이해하고 계시면 어려운 것은 없습니다. 
axis, legend, title,xlabel, ylabel, hold 등등은 help로 찾아보시면 쉽게 이해 하실 수 있을 겁니다.

사실 이 모든 것을 클릭으로 할 수 있습니다~ 어렵게 따라했더니만 뭐여?? 클릭질로 다 된다구!! 
But 생각해보세요. 그래프를 그릴 때 마다 클릭질 하실껍니까? ㅋㅋ M-file로 만들어 놓으면 편하다는 말씀..
자 그럼 Figure 창의 메뉴바를 둘러보세요. 백문이 불여 일 클릭이라고 이것 저것 다 건들여 봅시다. ^^ 
별 어려움 없이 이해가 가시죠? 특히 Figure의 Show Plot Tools 버튼을 이용하면 
편리하게 그래프의 특성들을 수정할 수 있습니다


subplot은 한 Figure 내에 여러개의 그래프를 그릴때 쓰이는 함수 입니다.
Matrix와 번호를 먹이는 방향이 조금 다르니 주의하세요

AXpoE03xn2qjkle0QOm46CN45gNLE765YIWz1B07L1Rvwe7uqvVrAL1jHYY5Ijc9yWF3LIutPu782xt7Uyl1ZO7z5ESafHbu-asuoI48KG8Npmsx-fo

>>subplot(2,2,1); % 2 x 2 중 첫번째를 선택하겠다는 말
>>plot(x,y1);
>>subplot(2,2,2);
>>plot(x,y2);
이해 되시죠?~


평면 그래프도 그려봤겠다 이제 다른 더 멋있는 그래프를 그려봅시다.
질문도 있고 하니 지도 Data로 3차원 그래프를 그려보도록 하죠

우선 우리가 가지고 놀 지도 Data를 불러 들입시다. Command Window에서
>>load korea %Mapping toolbox가 설치 되어 있어야 합니다.

친절하게도 MATLAB에서 우리나라의 지형 데이터를 Sample로 제공합니다. 
load를 했더니 Workspace에 새로운 변수들이 생겼습니다.
지금 불러들인 데이터들은 확장가가 .mat (MAT-File이라고 부릅니다)로 이미 하드디스크에 저장되어 있던 데이터입니다. 
M-file과 같이 데이터들도 당연히 저장할 수 있겠죠.
저장된 Data를 불러오려면 Open File아이콘을 누르시거나 메뉴에서 File -> Open을 선택하시거나 
Command Window에서 load 명령어를 쓰시면 mat으로 저장된 data를 불러올 수 있습니다. 
text 파일이나 csv파일 등은 importdata로 불러들일 수 있으니 참고하세요.

기억하실지 모르겠습니다만 Variable Editor에서 Column을 클릭해서 Sine 그래프를 그린적이 있습니다.
이번에는 Variable Editor 창이 아닌 Workspace에서 해보도록 하죠
Workspace에서 map을 선택후 위의 물결무늬 버튼 옆에 있는 조그마한 역삼각형 화살표(▼)를 클릭하면 
아래와 같이 나옵니다. More Plots를 클릭해주세요.

ZJuZUj49AYTxKrdi95v58fhhaYBq8p_inKu-7wTfE84ozCQ_hhu-OLzPVaCJBNlvcEnCUMynf_w6mtAroDNjT2bJlljLP7Kfv3qwOoUxPZyeVWJhxLA

짜잔~ Plot Catalog가 나옵니다. 참 종류도 많군요
각 아이콘을 클릭하면 옆에 설명이 나오니까 읽어보시고 여러분이 필요한 종류를 골라 쓰시면 되겠습니다.
A9tQaQS1xR6OUhZDVW2RIVXS2Etlw0mUz5_02atlON5t9QEj3SRL9yTjFwbWjrvMpCmkAcZfjlewG57RMO5VINq4exNqIuM_lOVjW1NKFr5TEMlFprs

우선 우리나라 지형 데이터를 가지고 등고선을 그려봅시다.
Plot Catalog에서 Contour Plots -> Contourf 를 선택후 아래의 Plot 버튼을 클릭합니다.

5JK1iecarwby4-jTuKNnJJ8HWrADVQHb5I0VGW7QXc79E1fqwBkMxZ1SRnT5j2ApUDoXL0mbwwL2mCDTXbH8-yGI7OSPf9bT3YCVV4DBY7GanJjWpx4

오홋!! 두둥!!

이번에는 3차원으로 그려보죠~
마찬가지로 Plot Catalog에서 3D Surfaces -> surf 를 선택후 Plot 버튼을 Click!!
처음에는 잘 안보이실 겁니다. 창을 최대로 키운후 Figure의 Rotate 3D 버튼을 눌러서 각도를 잘 돌려보세요.

rHv8QotmEcsZ4sBcg8V80EzYUBEdIjmhYWXFCDYk3MY7qUYL8q2VgKZqyyCVjdr8Yjftz7EkxIN-9eZT_VYOhe_B-KGXdU1prY2isqGKjVgG9qoBOdk

위의 그림을 클릭해서 크게 보시면 3차원으로 우리나라 지형을 보실 수 있습니다.
동해쪽은 수심이 장난이 아니군요. 서해쪽은 수심이 얕구요
제주도도 보이구 울릉도도 보입니다. ^^ 태백산맥도 보이네요

다른 Plot도 꼭 한번 씩 그려보세요~
역시 help는 우리의 영원한 친구이자 가장 충실한 조언자임을 기억합시다. 
뭐가 뭔지 모를 때는 help를!! 질문하신 분~ 도움이 되었나요? ^^

좀더 재미있는 걸루다가 놀아보죠
이번에는 움직이는 그래프를 그려봅시다.

Z = peaks; surf(Z); 
axis tight
set(gca,'nextplot','replacechildren');
% Record the movie
for j = 1:20 
surf(sin(2*pi*j/20)*Z,Z)
F(j) = getframe; %Figure를 캡쳐해서 저장합니다.
end
% Play the movie ten times
movie(F,10) %10번 반복해서 보여줍니다.


위의 명령을 복사해서 Command Window에 붙여넣기!! 그리고 Enter!!
프로그램 실행 중간에 빠져나오 싶으시면 Ctrl + C 를 누르세요

movie2avi 함수를 사용하시면 avi파일을 만들 수 있습니다.

MATLAB 동영상 강좌 - Lec07-01 Hierachy of Graphic Object  
MATLAB 동영상 강좌 - Lec07-02 Graphic Object Function 
MATLAB 동영상 강좌 - Lec07-07 3D Plot, Mesh Grid, Plot Catalog

자 오늘은 여기까지 입니다.
그럼 다음 시간에 뵙겠습니다. 휘리릭....
profile