67
MATLAB Programming Data Visualization: Introduction 김탁은 [email protected] 1

Lec 06. Graph I

Embed Size (px)

Citation preview

Page 1: Lec 06. Graph I

MATLAB Programming

Data Visualization: Introduction

김 탁 은[email protected]

1

Page 2: Lec 06. Graph I

MATLAB Programming

MATLAB에서 지원하는 그래프

PLOTS 탭

2

Page 3: Lec 06. Graph I

MATLAB Programming

MATLAB에서 지원하는 그래프

3

Page 4: Lec 06. Graph I

MATLAB Programming

2차원 그래프 그려보기

x = -pi:0.1:pi;y1 = sin(x);y2 = cos(x);plot( x, y1, ‘o’, x, y2, ‘:’ );

4

Page 5: Lec 06. Graph I

MATLAB Programming

Figure 창 컨트롤

그래프확대및축소

그래프포커스이동

그래프회전

범례표시

그래프저장

5

Page 6: Lec 06. Graph I

MATLAB Programming

MATLAB의 2D Plotting 원리

X 값과 Y 값이 아래와 같이 길이가 n인 벡터로 주어졌다고 가정

• 𝑋𝑋 = 𝑥𝑥1, 𝑥𝑥2, … , 𝑥𝑥𝑛𝑛• 𝑌𝑌 = 𝑦𝑦1, 𝑦𝑦2, … , 𝑦𝑦𝑛𝑛

MATLAB에서 그래프를 그리는 방법은

• 1. 동일한 인덱스를 가지는 𝑥𝑥𝑘𝑘, 𝑦𝑦𝑘𝑘값에 대해 𝑥𝑥𝑘𝑘, 𝑦𝑦𝑘𝑘 값을 좌표로 하여 점을 찍음• 2. 모든 𝑥𝑥𝑘𝑘,𝑦𝑦𝑘𝑘 점에 대해, 인접한 점 𝑥𝑥𝑘𝑘−1,𝑦𝑦𝑘𝑘−1 와 𝑥𝑥𝑘𝑘+1,𝑦𝑦𝑘𝑘+1 을 선으로 연결

6

Page 7: Lec 06. Graph I

MATLAB Programming

MATLAB의 2D Plotting 원리

X=0..pi 범위에서 sin(X) 를 그린다고 하면, X 와 Y 벡터를 아래와 같이 생성

• 𝑋𝑋 = 0, 0.1, 0.2, … , 𝑝𝑝𝑝𝑝• 𝑌𝑌 = sin 0 , sin 0.1 , sin 0.2 , … , sin 𝑝𝑝𝑝𝑝

MATLAB에서 plot(x, y) 수행 시,

• 1. 동일한 인덱스를 가지는 𝑥𝑥𝑘𝑘, 𝑦𝑦𝑘𝑘 값에 대해 𝑥𝑥𝑘𝑘,𝑦𝑦𝑘𝑘 ≔ 𝑥𝑥𝑘𝑘, sin𝑥𝑥𝑘𝑘 값을 좌표로 하여점을 찍음

• 2. 모든 𝑥𝑥𝑘𝑘,𝑦𝑦𝑘𝑘 점에 대해, 인접한 점 𝑥𝑥𝑘𝑘+1,𝑦𝑦𝑘𝑘+1 을 선으로 연결

두벡터는동일한길이를가지도록생성

x 값이촘촘할수록

더정확한모양의

그래프가그려짐!!

7

Page 8: Lec 06. Graph I

MATLAB Programming

MATLAB의 2D Plotting 원리

벡터 X의 원소 개수 (x축 분할 개수)에 따른 그래프의 변화

x = linspace(-2,2,500);y = exp(x) .* sin(1./x);plot(x,y)

x = linspace(-2,2,100);y = exp(x) .* sin(1./x);plot(x,y)

8

Page 9: Lec 06. Graph I

MATLAB Programming

그래프 곡선 속성

x = -pi:0.1:pi;y1 = sin(x);y2 = cos(x);plot( x, y1, ‘o’, x, y2, ‘:’ );

9

Page 10: Lec 06. Graph I

MATLAB Programming

그래프 곡선 속성

곡선의 선 모양, 색상, 기호 등을 각기 다르게 표현 가능• 각 속성들을 조합해서 그래프 드로잉

곡선속성 기호 의미

기호

. 점

x x표

o 원

+ 플러스기호

* 별표

s 정방형

d 다이아몬드

v 삼각형 (위쪽)

^ 삼각형 (아래쪽)

< 삼각형 (왼쪽)

> 삼각형 (오른쪽)

p 오각형

h 육각형

곡선속성 기호 의미

색종류

b 파란색

r 빨강색

g 녹색

c 청록색

m 자홍색

y 노란색

w 흰색

k 검은색

곡선속성 기호 의미

선모양

- 실선

: 점선

-. 반점선

-- 긴점선

10

Page 11: Lec 06. Graph I

MATLAB Programming

그래프 곡선 속성

실습: 그래프 곡선 속성들을 다양하게 조합하여 그래프를 그려보자

>> plot(-2:0.1:2, sin(-2:0.1:2), 'k<:')>> plot(-2:0.1:2, sin(-2:0.1:2), 'rp-.')>> plot(-2:0.1:2, sin(-2:0.1:2), 'b-.')

11

Page 12: Lec 06. Graph I

MATLAB Programming

격자, 라벨, 범례

격자• grid on, grid off

축 라벨• x축: xlabel( 문자열 )• y축: ylabel( 문자열 )

범례• legend( 문자열, 문자열, 범례위치 )

x = 0:0.1:2*pi;y = sin(x);z = exp(-x).*cos(x);plot(x, y, x, z, ':');grid on;xlabel('x value');ylabel('y value');legend( 'sin(x)', 'exp(-x)*cos(x)', -1);

12

Page 13: Lec 06. Graph I

MATLAB Programming

범례(legend)의 위치

옵션 범례의 위치

0 데이터와 겹치지 않는 최적 위치

1 축의 오른쪽 위 모서리

2 축의 왼쪽 위 모서리

3 축의 왼쪽 아래 모서리

4 축의 오른쪽 아래 모서리

-1 그래프의 오른쪽

13

Page 14: Lec 06. Graph I

MATLAB Programming

축(axis) 속성

axis tight 또는 axis(‘tight’)

x = 0:0.1:2*pi;y = cos(x);plot(x,y);

>> axis tight

14

Page 15: Lec 06. Graph I

MATLAB Programming

축(axis) 속성

axis( [xmin xmax ymin ymax] )

>> axis( [-1 7 -1.2 1.2] )

axis 명령어 옵션 의미

axis auto 기본 축 한계로 되돌아감

axis equal x, y, z 축 상의 데이터 단위를 동일화

axis off 축을 제거

axis square 축 박스를 정사각형으로 설정

xlim( [xmin xmax] ) x축 한계를 설정

ylim( [ymin ymax] ) y축 한계를 설정

15

Page 16: Lec 06. Graph I

MATLAB Programming

축(axis) 속성

MATLAB은 그래프가 화면에서 가능한 한 많은 공간을 이용할 수 있도록직사각형 모양의 좌표계를 만듬

axis 명령어옵션 의미

axis auto 기본 축 한계로 되돌아감

axis equalx, y, z 축의 unit이 동등한 크기를갖도록 설정

axis square 축 박스를 정사각형으로 설정

axis image axis equal + axis tight

t = 0:0.1:2*pi;x = 2 * cos(t);y = 2 * sin(t);plot(x, y);

axis auto axis equal

axis square

16

Page 17: Lec 06. Graph I

MATLAB Programming

축(axis) 속성

아래와 같이 타원형 그래프를 그려서, axis equal 과 axis square가어떻게 다른지 확인해 봅시다.

t = 0:0.1:2*pi;x = 2 * cos(t);y = 4 * sin(t);plot(x, y);

17

Page 18: Lec 06. Graph I

MATLAB Programming

축(axis) 속성

아래와 같이 타원형 그래프를 그려서, axis equal 과 axis square가어떻게 다른지 확인해 봅시다.

t = 0:0.1:2*pi;x = 2 * cos(t);y = 4 * sin(t);plot(x, y);

axis equal

axis square

18

Page 19: Lec 06. Graph I

MATLAB Programming

축 눈금 표시

축의 속성 ‘xtick’, ‘xticklabel’ 변경

x = 0:0.1:2*pi;xlabel = linspace(0, 2*pi, 5);w = '0 pi|0.5 pi|1 pi|1.5 pi|2 pi';

plot( x, sin(x) );set(gca, 'xtick', xlabel, 'xticklabel', w);

19

Page 20: Lec 06. Graph I

MATLAB Programming

Handle Graphics Object

한 그래프는 여러 그래픽 오브젝트들의 조합으로 만들어짐

• Handle이란?– MATLAB이 그래픽 오브젝트에 부여하는 고유의 식별 아이디

• Handle은 왜 필요한가?– 그래프 figure가 여러 개 생성되어 있을 때, 첫 번째 figure의 속성을 바꾸고 싶다면?– 첫 번째 figure의 handle로 접근이 가능

Figure Object

Axes Object

Line Object

Text Object

20

Page 21: Lec 06. Graph I

MATLAB Programming

Handle Graphics Object

set 함수• 매개변수로 지정한 그래픽 오브젝트의 속성을 변경

• set( handle, propertyname, propertyvalue, propertyname, propertyvalue, …)

>> set( 1, ‘color’ , ‘w’)

Figure의Handle

특성이름(propertyname)

특성값(propertyvalue)

21

Page 22: Lec 06. Graph I

MATLAB Programming

propertynames, propertyvalues>> set(1)

AlphamapCloseRequestFcn: string -or- function handle -or- cell arrayColorColormapCurrentAxesCurrentCharacterCurrentObjectCurrentPointDockControls: [ {on} | off ]FileNameIntegerHandle: [ {on} | off ]InvertHardcopy: [ {on} | off ]KeyPressFcn: string -or- function handle -or- cell arrayKeyReleaseFcn: string -or- function handle -or- cell arrayMenuBar: [ none | {figure} ]NameNextPlot: [ new | {add} | replace | replacechildren ]NumberTitle: [ {on} | off ]PaperUnits: [ {inches} | centimeters | normalized | points ]PaperOrientation: [ {portrait} | landscape | rotated ]PaperPositionPaperPositionMode: [ auto | {manual} ]PaperSizePaperType: [ {usletter} | uslegal | A0 | A1 | A2 | A3 | A4 | A5 | B0 | B1 | B2 | B3 | B4 | B5 | arch-A | arch-B | arch-C | arch-D | arch-E | A | B | C | D | E | tabloid | <custom> ]Pointer: [ crosshair | fullcrosshair | {arrow} | ibeam | watch | topl | topr | botl | botr | left | top | right | bottom | circle | cross | fleur | custom | hand ]PointerShapeCDataPointerShapeHotSpotPositionRenderer: [ {painters} | zbuffer | OpenGL | None ]RendererMode: [ {auto} | manual ]Resize: [ {on} | off ]ResizeFcn: string -or- function handle -or- cell arraySelectionType: [ normal | open | alt | extend ]ToolBar: [ none | {auto} | figure ]Units: [ inches | centimeters | normalized | points | {pixels} | characters ]WindowButtonDownFcn: string -or- function handle -or- cell arrayWindowButtonMotionFcn: string -or- function handle -or- cell arrayWindowButtonUpFcn: string -or- function handle -or- cell arrayWindowKeyPressFcn: string -or- function handle -or- cell arrayWindowKeyReleaseFcn: string -or- function handle -or- cell arrayWindowScrollWheelFcn: string -or- function handle -or- cell arrayWi d St l [ { l} | d l | d k d ]

22

Page 23: Lec 06. Graph I

MATLAB Programming

그래픽 오브젝트 속성 변경해보기

>> close all>> peaks

z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2)

>> set( 1, ‘visible’, ‘off’ )>> set( 1, ‘visible’, ‘on’ )>> set( 1, ‘pos’, [230 320 360 350] )>> set( 1, ‘color’, ‘w’ )>> set( 1, ‘color’, ‘g’, ‘pos’, [100 320 100 350] )

23

Page 24: Lec 06. Graph I

MATLAB Programming

특정 Handle을 가리키는 변수

gcf (get current figure )• 현재 활성화 되어있는 figure window의 handle값을 갖고 있는 변수

gca (get current axes )• 현재 활성화 되어 있는 figure window의 axes object의 handle 값을갖고 있는 변수

gco (get current object)• 현재 활성화 되어 있는 figure window에서 마우스로 클릭한 그래프요소의 handle 값을 갖고 있는 변수

24

Page 25: Lec 06. Graph I

MATLAB Programming

특정 Handle을 가리키는 변수

>> t = -2:0.01:2;>> y1 = t .^ 2;>> y2 = t .^ 3;>> plot( t, y1, t, y2 )

파란색선마우스로선택

>> set( gco, ‘linestyle’, ‘:’ )

25

Page 26: Lec 06. Graph I

MATLAB Programming

좌우 Y축 범위 다르게 plot

plotyy( X1, Y1, X2, Y2 )

x = 0:0.1:1;plotyy(x, sin(x), x2, 10*cos(x));

26

Page 27: Lec 06. Graph I

MATLAB Programming

여러 그래프를 하나의 그림에 나타내기

subplot(m, n, p) 또는 subplot(mnp)• 그림을 m x n 영역로 나누고, p번째 영역에 plot

subplot(2, 2, 1);x = 0:0.1:2*pi;plot( x, sin(x) );

subplot(2, 2, 2);x = 0:0.1:10;plot( x, sin(round(x)) );

subplot(2, 2, 3);x = 0.01:0.01:2*pi;plot( x, sinc(x) );

subplot(2, 2, 4);x = 0:0.1:2*pi;plot( x, sin(x) );hold on;plot( x, cos(2*x) );

1 2

3 4

27

Page 28: Lec 06. Graph I

MATLAB Programming

여러 그래프를 하나의 그림에 나타내기

subplot(2, 2, [1 3]);x = 0:0.1:2*pi;plot( x, sin(x) );

subplot(2, 2, 2);x = 0:0.1:10;plot( x, sin(round(x)) );

subplot(2, 2, 4);x = 0:0.1:2*pi;plot( x, cos(2*x) );

28

Page 29: Lec 06. Graph I

MATLAB Programming

Quiz

이전 슬라이드의 그래프와 다르게, 첫 번째 그래프가 가로로 넓게 펼쳐진 형태의figure를 만들어 봅시다.

29

Page 30: Lec 06. Graph I

MATLAB Programming

축 방향 거꾸로 만들기

set(gca, ‘xdir’ 또는 ’ydir’ 또는 ’zdir’, ‘rev’)

x 축 또는 y 축이 일반적인 방향의 역방향으로 생성되도록 드로잉• x축의 값 증가 방향: “왼쪽오른쪽” 에서 “오른쪽왼쪽”• y축의 값 증가 방향: “아래쪽위쪽” 에서 “위쪽아래쪽”

t = 0:0.1:2*pi;subplot(1, 2, 1);plot( t, sinc(t) );

subplot(1, 2, 2)plot( t, sinc(t) );set( gca, 'xdir', 'rev' );

30

Page 31: Lec 06. Graph I

MATLAB Programming

grid on/off 외의 속성들

xgrid, ygrid, zgrid : 각각의 좌표축에만 grid 설정 gridlinestyle : grid 라인의 스타일 변경

t = 0:0.001:1;y = exp(-20*t) .* sin(200*t);plot(t, y);set(gca, 'xgrid', 'on', 'gridlinestyle', '-.');

31

Page 32: Lec 06. Graph I

MATLAB Programming

곡선과 눈금 모양 설정

plot 함수에서 선의 굵기, marker의 크기 및 색상, 폰트의 크기 등을설정 가능

plot 함수 옵션 기본값

LineWidtn 0.5

MarkerSize 6

MarkerEdgeColor auto

MarkerFaceColor none

FontSize 10

FontAngle normal

>> plot(x,sin(x), '^r--','LineWidth', 2,'MarkerEdgeColor', 'g','MarkerFaceColor', 'b')

32

Page 33: Lec 06. Graph I

MATLAB Programming

ez* 그래프 드로잉 함수들

33

Page 34: Lec 06. Graph I

MATLAB Programming

ez* 함수

ezplot, ezcontour, ezsurf, ezpolar, ezmesh, …

easy-to-use * plotter

문자열 수식 표현 (string expression) 으로부터 함수를 그림 eg) 원의 방정식 𝑥𝑥2 + 𝑦𝑦2 = 1 을 그림

34

Page 35: Lec 06. Graph I

MATLAB Programming

ezplot (2D plotter)

ezplot( f )• 𝑓𝑓(𝑋𝑋) 그래프를 −2𝜋𝜋 < 𝑋𝑋 < 2𝜋𝜋 도메인에서 그림• 𝑓𝑓 𝑋𝑋,𝑌𝑌 = 0 그래프를 −2𝜋𝜋 < 𝑋𝑋 < 2𝜋𝜋, −2𝜋𝜋 < 𝑌𝑌 < 2𝜋𝜋 도메인에서 그림

>> ezplot( ‘exp( x^2 ) / x’ )

>> ezplot( 'sin(x) + sin(y) = sin(x*y)' )

35

Page 36: Lec 06. Graph I

MATLAB Programming

ezplot (2D plotter)

ezplot( f, [A B] )• 𝑓𝑓(𝑋𝑋) 그래프를 𝐴𝐴 < 𝑋𝑋 < 𝐵𝐵 도메인에서 드로잉• 𝑓𝑓 𝑋𝑋,𝑌𝑌 = 0 그래프를 𝐴𝐴 < 𝑋𝑋 < 𝐵𝐵, 𝐴𝐴 < 𝑌𝑌 < 𝐵𝐵 도메인에서 드로잉

>> ezplot('sinc(x)', [-1, 10])

>> ezplot('x^2+y^2 = 3^2', [-pi 0.7*pi])

36

Page 37: Lec 06. Graph I

MATLAB Programming

ezplot (2D plotter)

ezplot( fx, fy )

• parametric equation으로 기술된 그래프 [𝑓𝑓𝑥𝑥 𝑇𝑇 ,𝑓𝑓𝑦𝑦(𝑇𝑇)] 를 0 < 𝑇𝑇 < 2𝜋𝜋 도메인에서 그림

ezplot( fx, fy, [A, B] )

parametric equation으로 기술된 그래프 [𝑓𝑓𝑥𝑥 𝑇𝑇 ,𝑓𝑓𝑦𝑦 𝑇𝑇 ] 를 𝐴𝐴 < 𝑇𝑇 < 𝐵𝐵 도메인에서 그림

>> ezplot('cos(t)', 'cos(t)*sin(t)')

>> ezplot('cos(t)', 'cos(t)*sin(t)', [0, 3])

37

Page 38: Lec 06. Graph I

MATLAB Programming

ezplot3 (3D plotter)

ezplot3( fx, fy, fz )• 𝑓𝑓𝑥𝑥(𝑇𝑇), 𝑓𝑓𝑦𝑦(𝑇𝑇), 𝑓𝑓𝑧𝑧(𝑇𝑇) 그래프를 0 < 𝑇𝑇 < 2𝜋𝜋 도메인에서 그림

>> ezplot3( 'cos(t)','t*sin(t)','sqrt(t)‘ )

38

Page 39: Lec 06. Graph I

MATLAB Programming

ezplot3 (3D plotter)

ezplot3( fx, fy, fz, [A, B] )• 𝑓𝑓𝑥𝑥(𝑇𝑇), 𝑓𝑓𝑦𝑦(𝑇𝑇), 𝑓𝑓𝑧𝑧(𝑇𝑇) 그래프를 𝐴𝐴 < 𝑇𝑇 < 𝐵𝐵 도메인에서 그림

>> ezplot3( 'cos(t)','t*sin(t)','sqrt(t)‘, [0, 10] )

39

Page 40: Lec 06. Graph I

MATLAB Programming

ezplot3 (3D plotter)

ezplot3( fx, fy, fz, [A, B], ‘animate’ )• 𝑓𝑓𝑥𝑥(𝑇𝑇), 𝑓𝑓𝑦𝑦(𝑇𝑇), 𝑓𝑓𝑧𝑧(𝑇𝑇) 그래프를 𝐴𝐴 < 𝑇𝑇 < 𝐵𝐵 도메인에서 그리고, T 가 A부터

B까지 값을 변화시켜가며 함수의 궤적을 애니메이션으로 보여줌

>> ezplot3( 'cos(t)','t*sin(t)','sqrt(t)‘, [0, 10], ‘animate’ )

40

Page 41: Lec 06. Graph I

MATLAB Programming

ezcontour

ezcontour( f )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 등고선(contour)를 −2𝜋𝜋 < 𝑋𝑋 < 2𝜋𝜋, −2𝜋𝜋 < 𝑌𝑌 < 2𝜋𝜋 도메인에서 그림

ezcontour( f, [A B] )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 등고선(contour)를 𝐴𝐴 < 𝑋𝑋 < 𝐵𝐵, A < 𝑌𝑌 < 𝐵𝐵 도메인에서 그림

ezcontour( f, [xmin xmax ymin ymax] )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 등고선(contour)를 𝑥𝑥𝑥𝑥𝑝𝑝𝑥𝑥 < 𝑋𝑋 < 𝑥𝑥𝑥𝑥𝑥𝑥𝑥𝑥, 𝑦𝑦𝑥𝑥𝑝𝑝𝑥𝑥 < 𝑌𝑌 < 𝑦𝑦𝑥𝑥𝑥𝑥𝑥𝑥 도메인에서 그림

>> ezcontour('sin(3*y-x^2+1) + cos(2*y^2-2*x)', [-2 2 -1 1])

41

Page 42: Lec 06. Graph I

MATLAB Programming

Quiz

다음 수식의 등고선을 ezcontour 함수를 이용하여 그려봅시다.( x값과 y값의 도메인은 각각 −3 ≤ 𝑥𝑥 ≤ 3, −1.5 ≤ 𝑥𝑥 ≤ 1.5 )

𝑧𝑧 = 4𝑥𝑥2 − 2.1𝑥𝑥4 +13𝑥𝑥6 + 𝑥𝑥𝑦𝑦 − 4𝑦𝑦2 + 4𝑦𝑦4

42

Page 43: Lec 06. Graph I

MATLAB Programming

ezcontourf

ezcontourf( f )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 (색이 채워진) 등고선(contour)을 −2𝜋𝜋 < 𝑋𝑋 < 2𝜋𝜋, −2𝜋𝜋 < 𝑌𝑌 < 2𝜋𝜋 도메인에서

그림

ezcontourf( f, [A B] )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 (색이 채워진) 등고선(contour)을 𝐴𝐴 < 𝑋𝑋 < 𝐵𝐵, A < 𝑌𝑌 < 𝐵𝐵 도메인에서 그림

ezcontourf( f, [xmin xmax ymin ymax] )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 (색이 채워진) 등고선(contour)를 𝑥𝑥𝑥𝑥𝑝𝑝𝑥𝑥 < 𝑋𝑋 < 𝑥𝑥𝑥𝑥𝑥𝑥𝑥𝑥, 𝑦𝑦𝑥𝑥𝑝𝑝𝑥𝑥 < 𝑌𝑌 < 𝑦𝑦𝑥𝑥𝑥𝑥𝑥𝑥

도메인에서 그림

>> ezcontour('sin(3*y-x^2+1) + cos(2*y^2-2*x)', [-2 2 -1 1])

43

Page 44: Lec 06. Graph I

MATLAB Programming

ezcontourf

ezcontourf( f )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 (색이 채워진) 등고선(contour)을 −2𝜋𝜋 < 𝑋𝑋 < 2𝜋𝜋, −2𝜋𝜋 < 𝑌𝑌 < 2𝜋𝜋 도메인에서

그림

ezcontourf( f, [A B] )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 (색이 채워진) 등고선(contour)을 𝐴𝐴 < 𝑋𝑋 < 𝐵𝐵, A < 𝑌𝑌 < 𝐵𝐵 도메인에서 그림

ezcontourf( f, [xmin xmax ymin ymax] )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 (색이 채워진) 등고선(contour)를 𝑥𝑥𝑥𝑥𝑝𝑝𝑥𝑥 < 𝑋𝑋 < 𝑥𝑥𝑥𝑥𝑥𝑥𝑥𝑥, 𝑦𝑦𝑥𝑥𝑝𝑝𝑥𝑥 < 𝑌𝑌 < 𝑦𝑦𝑥𝑥𝑥𝑥𝑥𝑥

도메인에서 그림

>> ezcontour('sin(3*y-x^2+1) + cos(2*y^2-2*x)', [-2 2 -1 1])

44

Page 45: Lec 06. Graph I

MATLAB Programming

ezsurf

ezsurf( f )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 3차원 그래프를 −2𝜋𝜋 < 𝑋𝑋 < 2𝜋𝜋, −2𝜋𝜋 < 𝑌𝑌 < 2𝜋𝜋 도메인에서 그림

ezsurf( f, [A B] )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 3차원 그래프를 𝐴𝐴 < 𝑋𝑋 < 𝐵𝐵, A < 𝑌𝑌 < 𝐵𝐵 도메인에서 그림

ezsurf( f, [xmin xmax ymin ymax] )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 3차원 그래프를 𝑥𝑥𝑥𝑥𝑝𝑝𝑥𝑥 < 𝑋𝑋 < 𝑥𝑥𝑥𝑥𝑥𝑥𝑥𝑥, 𝑦𝑦𝑥𝑥𝑝𝑝𝑥𝑥 < 𝑌𝑌 < 𝑦𝑦𝑥𝑥𝑥𝑥𝑥𝑥 도메인에서 그림

>> ezsurf('sin(3*y-x^2+1) + cos(2*y^2-2*x)', [-2 2 -1 1])

45

Page 46: Lec 06. Graph I

MATLAB Programming

ezsurf

ezsurf( f )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 3차원 그래프를 −2𝜋𝜋 < 𝑋𝑋 < 2𝜋𝜋, −2𝜋𝜋 < 𝑌𝑌 < 2𝜋𝜋 도메인에서 그림

ezsurf( f, [A B] )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 3차원 그래프를 𝐴𝐴 < 𝑋𝑋 < 𝐵𝐵, A < 𝑌𝑌 < 𝐵𝐵 도메인에서 그림

ezsurf( f, [xmin xmax ymin ymax] )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 3차원 그래프를 𝑥𝑥𝑥𝑥𝑝𝑝𝑥𝑥 < 𝑋𝑋 < 𝑥𝑥𝑥𝑥𝑥𝑥𝑥𝑥, 𝑦𝑦𝑥𝑥𝑝𝑝𝑥𝑥 < 𝑌𝑌 < 𝑦𝑦𝑥𝑥𝑥𝑥𝑥𝑥 도메인에서 그림

>> ezsurf('sin(3*y-x^2+1) + cos(2*y^2-2*x)', [-2 2 -1 1])

46

Page 47: Lec 06. Graph I

MATLAB Programming

ezsurf

ezsurf( fx, fy, fz )• 3차원 parametric surface를 그림• 𝑓𝑓𝑥𝑥 𝑆𝑆,𝑇𝑇 , 𝑓𝑓𝑦𝑦 𝑆𝑆,𝑇𝑇 , 𝑓𝑓𝑧𝑧 𝑆𝑆,𝑇𝑇 를 −2𝜋𝜋 < 𝑆𝑆 < 2𝜋𝜋, −2𝜋𝜋 < 𝑇𝑇 < 2𝜋𝜋 도메인에서 그림

>> ezsurf( 'x', 'x+y', 'sin(x)+cos(2*y)‘ )

47

Page 48: Lec 06. Graph I

MATLAB Programming

ezsurfc

ezsurfc( f )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 3차원 그래프와 등고선(contour)를 −2𝜋𝜋 < 𝑋𝑋 < 2𝜋𝜋, −2𝜋𝜋 < 𝑌𝑌 < 2𝜋𝜋 도메인에서

그림

ezsurfc( f, [A B] )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 3차원 그래프와 등고선(contour)를 𝐴𝐴 < 𝑋𝑋 < 𝐵𝐵, A < 𝑌𝑌 < 𝐵𝐵 도메인에서 그림

ezsurfc( f, [xmin xmax ymin ymax] )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 3차원 그래프와 등고선(contour)를 𝑥𝑥𝑥𝑥𝑝𝑝𝑥𝑥 < 𝑋𝑋 < 𝑥𝑥𝑥𝑥𝑥𝑥𝑥𝑥, 𝑦𝑦𝑥𝑥𝑝𝑝𝑥𝑥 < 𝑌𝑌 < 𝑦𝑦𝑥𝑥𝑥𝑥𝑥𝑥

도메인에서 그림

>> ezsurfc('x.*exp(-x.^2 - y.^2)')

48

Page 49: Lec 06. Graph I

MATLAB Programming

Quiz

3차원 상에서 원의 방정식은 parametric equation으로 다음과 같이기술할 수 있습니다. ezsurf 함수로 반지름이 1인 입체 원을 그려봅시다.

• 이용할 함수: ezsurf( fx, fy, fz )

• parametric equation 𝑥𝑥 = 𝑟𝑟 cos∅ cos𝜃𝜃 𝑦𝑦 = 𝑟𝑟 sin∅ 𝑧𝑧 = 𝑟𝑟 cos∅ sin𝜃𝜃

• 도메인 0 < ∅ < 2𝜋𝜋, 0 < 𝜃𝜃 < 2𝜋𝜋

49

Page 50: Lec 06. Graph I

MATLAB Programming

Quiz Sol.

3차원 상에서 원의 방정식은 parametric equation으로 다음과 같이기술할 수 있습니다. ezsurf 함수로 반지름이 1인 입체 원을 그려봅시다.

• 이용할 함수: ezsurf( fx, fy, fz )

• parametric equation 𝑥𝑥 = 𝑟𝑟 cos∅ cos𝜃𝜃 𝑦𝑦 = 𝑟𝑟 sin∅ 𝑧𝑧 = 𝑟𝑟 cos∅ sin𝜃𝜃

• 도메인 0 < ∅ < 2𝜋𝜋, 0 < 𝜃𝜃 < 2𝜋𝜋

>> ezsurf('cos(x)*cos(y)', 'sin(x)', 'cos(x)*sin(y)', [0, 2*pi])

50

Page 51: Lec 06. Graph I

MATLAB Programming

ezmesh, ezmeshc

ezmesh( f )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 3차원 그래프를 그물(mesh) 형태로 −2𝜋𝜋 < 𝑋𝑋 < 2𝜋𝜋, −2𝜋𝜋 < 𝑌𝑌 < 2𝜋𝜋 도메인에서

그림

ezmeshc( f )• 𝑓𝑓 𝑋𝑋,𝑌𝑌 의 3차원 그래프를 그물(mesh) 형태로 등고선(contour)와 함께 −2𝜋𝜋 < 𝑋𝑋 < 2𝜋𝜋,

− 2𝜋𝜋 < 𝑌𝑌 < 2𝜋𝜋 도메인에서 그림

51

Page 52: Lec 06. Graph I

MATLAB Programming

ezpolar (polar coordinate plotter)

ezpolar( f )• 극좌표계에서 𝑓𝑓(𝜃𝜃) 함수를 0 < 𝜃𝜃 < 2𝜋𝜋 도메인에서 그림

ezpolar( f, [A, B] )• 극좌표계에서 𝑓𝑓(𝜃𝜃) 함수를 A < 𝜃𝜃 < 𝐵𝐵 도메인에서 그림

>> ezpolar( 'sin(2*t)*cos(3*t)', [0 pi] )

52

Page 53: Lec 06. Graph I

MATLAB Programming

2D 그래프 드로잉 함수들

53

Page 54: Lec 06. Graph I

MATLAB Programming

bar 그래프

subplot(3,1,1);bar( rand(10,5), 'stacked‘ );subplot(3,1,2);bar( 0:.25:1, rand(5), 1);subplot(3,1,3);bar( rand(2,3), .75, 'grouped‘ );

>> x = [55 68 76 80 95];>> y = [6 12 18 11 4];>> bar(x, y);>> barh(x, y);

54

Page 55: Lec 06. Graph I

MATLAB Programming

bar 그래프

수능 등급 별 학생수

수능등급 1반 2반 3반

1등급 5 7 4

2등급 12 11 15

3등급 19 20 17

4등급 7 6 5

5등급 2 1 3

S = [5 7 4; 12 11 15; 19 20 17; 7 6 5; 2 1 3];bar(S);legend( ‘1반’, ‘2반’, ‘3반’ );xlabel( ‘등급’ );ylabel( ‘학생수’ );

55

Page 56: Lec 06. Graph I

MATLAB Programming

bar3 그래프

수능 등급 별 학생수

수능등급 1반 2반 3반

1등급 5 7 4

2등급 12 11 15

3등급 19 20 17

4등급 7 6 5

5등급 2 1 3

S = [5 7 4; 12 11 15; 19 20 17; 7 6 5; 2 1 3];bar3(S)legend('1반', '2반', '3반');xlabel('반');ylabel('학생수');ylabel('등급');zlabel('학생수');

56

Page 57: Lec 06. Graph I

MATLAB Programming

hist 그래프

r = hist( Y )• 입력 데이터 Y의 범위를 균일하게 10등분

하여 해당 범위 내에 속하는 원소들을 count

r = hist( Y, k )• 입력 데이터 Y의 범위를 균일하게 k등분 하여

해당 범위 내에 속하는 원소들을 count

>> hist( randn(1000,1) )

>> hist( randn(1000, 50) )

57

Page 58: Lec 06. Graph I

MATLAB Programming

area 그래프

S = [5 7 4; 12 11 15; 19 20 17; 7 6 5; 2 1 3];area(S);legend( ‘1반’, ‘2반’, ‘3반’ );xlabel( ‘반’ );ylabel( ‘학생수’ );

58

Page 59: Lec 06. Graph I

MATLAB Programming

pie 그래프

x = [1 2 3 4 5];y = [16 38 56 18 6];pie(x, y);legend('grade 1', 'grade 2', 'grade 3', 'grade 4', 'grade 5', -1);

59

Page 60: Lec 06. Graph I

MATLAB Programming

pie3 그래프

h = pie3( X )• 배열 X를 구성하는 각각의 원소들을 하나의 조각으로 표현

h = pie3( X, explode )• explode의 nonzero에 있는 조각을 pie chart 중심에서 이탈시켜 표현

>> x = [1 3 0.5 2.5 2];>> explode = [0 1 0 0 1];>> pie3( x, explode );

60

Page 61: Lec 06. Graph I

MATLAB Programming

계단 모양 그래프

이산 데이터 표시 등에 사용될 수 있는 그래프

>> x = 0:0.1:2*pi;>> y = sin(x);>> stairs( y );

61

Page 62: Lec 06. Graph I

MATLAB Programming

stem 그래프

이산 신호 임펄스 응답 나타낼 때 이용

>> x = 0:0.1:2*pi;>> y = sin(x);>> stem( y );

62

Page 63: Lec 06. Graph I

MATLAB Programming

errorbar 그래프

데이터의 신뢰도 표시에 사용되는 그래프• 오차 데이터 지정해야 함

>> x = 0:0.5:2*pi;>> y = sin(x);>> lowlimit = 0.1*ones(size(x));>> highlimit = 0.3*ones(size(x));>> errorbar(x, y, lowlimit, highlimit);

63

Page 64: Lec 06. Graph I

MATLAB Programming

Quiz

𝑓𝑓 𝑥𝑥 = (−1)𝑛𝑛의 fourier series는 아래와 같이 구할 수 있습니다. Fourier Series에서 10개의 sine term까지 합에 대한 그래프를 생성해 보고, 100개까지 합에 대한 그래프도 생성해 봅시다.

𝑓𝑓 𝑥𝑥 =4𝜋𝜋

(sin𝜋𝜋𝑥𝑥 +13

sin 3𝜋𝜋𝑥𝑥 +15

sin 5𝜋𝜋𝑥𝑥 + ⋯ )

64

Page 65: Lec 06. Graph I

MATLAB Programming

Quiz Sol.

𝑓𝑓 𝑥𝑥 = (−1)𝑛𝑛의 fourier series는 아래와 같이 구할 수 있습니다. Fourier Series에서 10개의 sine term까지 합에 대한 그래프를 생성해 보고, 100개까지 합에 대한 그래프도 생성해 봅시다.

𝑓𝑓 𝑥𝑥 =4𝜋𝜋

(sin𝜋𝜋𝑥𝑥 +13

sin 3𝜋𝜋𝑥𝑥 +15

sin 5𝜋𝜋𝑥𝑥 + ⋯ )

x = -2:0.01:2;n = 100;

f = zeros(1, length(x));

for k=1:2:nf = f + sin(pi*k*x)/k;

end

plot(x,f);

65

Page 66: Lec 06. Graph I

MATLAB Programming

Plot Editing

66

Page 67: Lec 06. Graph I

MATLAB Programming

Plot Editing

그래프 회전, 텍스트 레이블, 화살표, 도형, …

67