Download presentation
Presentation is loading. Please wait.
1
MATLAB 개요와 응용 5장 2차원 그래프
2
강의 내용 plot 명령어 fplot 명령어 같은 그래프에 여러 곡선 출력하기 그래프의 형식지정 로그 축 그래프 특수 그래프
히스토그램 같은 페이지에 여러 그래프 그리기 다중 그림 창 응용예제 5장 2차원 그래프
3
PLOT 명령어 정보를 표현하는 데 그래프는 매우 유용한 도구이다. MATLAB에는 여러 유형의 그래프를 생성하는 데 사용할 수 있는 많은 명령어들이 있다. 그래프 종류 : 선형축 표준 그래프, 로그 및 세미로그 축 그래프, 극좌표 그래프, 막대그래프 및 계단그래프, 3차원 윤곽 표면 및 망 그래프 등 그래프 형식지정 : 선 형태(직선, 파선 등), 색깔, 두께 등 지정. 그래프의 제목과 텍스트 설명, 데이터 표식(marker)과 격자선(grid line) 추가. 여러 개의 곡선을 한 그래프에 표시하기, 여러 그래프를 한 페이지에 나타내기. 범례(legend) 표시하기 등. 이 장에서는 MATLAB을 이용하여 여러 유형의 2차원 그래프를 생성하고 그래프의 형식을 지정하는 방법에 대해 기술한다. 3차원 그래프는 9장에서 별도로 다루기로 한다. 5장 2차원 그래프
4
그래프 구성 요소 Figure window title number Figure window title Plot title
Legend X axis label Y axis label Marker Text label 5장 2차원 그래프
5
그래프 생성 프로그램 예 x=[10:0.1:22]; y=95000./x.^2;
xd=[10:2:22]; yd=[ ]; plot(x,y, '-', 'LineWidth', 1.0) xlabel('\fontname{돋움}거리(cm)') ylabel('\fontname{돋움}세기(lux)') axis([ ]) title('\fontname{바탕}\bf거리 함수인 빛의 세기', … 'FontSize',14) text(14,700,'\fontname{돋움}이론과 실험의 비교', … 'EdgeColor','r','LineWidth',2) grid on, hold on plot(xd, yd, 'ro--', 'LineWidth', 1.0, 'MarkerSize', 10) legend('\fontname{돋움}이론', '\fontname{돋움}실험', 0) set(gcf, 'Name', 'Fig. 5-8') %set(… ,'NumberTitle', 'off') hold off 5장 2차원 그래프
6
PLOT 명령어 2차원 그래프를 생성하는 데 사용되는 plot 명령어의 형식 : plot(x, y) 그래프 예
x : x 좌표값들을 가진 벡터 y : y 좌표값들을 가진 벡터 x, y 두 벡터로부터 형성되는 순서쌍을 그래프에 점으로 나타내고 점들을 직선으로 잇는다. plot(x, y) 그래프 예 >> x=[ ]; >> y=[ ]; >> plot(x, y), grid on 그래프의 기본 선 색깔은 파란색이다. 5장 2차원 그래프
7
그래프 형식 지정자 plot 명령어의 옵션으로 선 색깔과 종류, 데이터 표식(marker) 모양 등을 지정할 수 있다. 옵션을 사용하기 위한 plot 명령어의 형식 : plot(x, y, ‘line specifiers', 'PropertyName', PropertyValue) 선과 marker의 모양∙색 지정 선의 굵기, marker의 크기∙테두리 ∙배경 색 지정 선 종류 지정자 실선(기본) Solid line - 파 선 Dashed line -- 점 선 Dotted line : 일점쇄선 Dash-dot line -. 선 색깔 지정자 red r green g blue b cyan c magenta m yellow y black k white w Marker 모양 지정자 plus 부호 + 원 o(알파벳) 별표 * 점 . ▲/ ▼/ ◄/► ^/v/</> ■ s ♦ d x 5장 2차원 그래프
8
그래프 형식 지정 예 5장 2차원 그래프
9
그래프 형식 지정자 사용시 유의할 점 선택사항인 지정자는 plot 명령어 안에 문자열로 표시한다.
여러 개의 지정자를 문자열 내에 표시하는 경우 순서는 상관없다. plot(x, y) 파란 실선(기본 설정) ♦ plot(x, y, 'r') 빨간 실선 plot(x, y, '--y') 노란 파선 plot(x, y, '*') 연결선 없이 데이터값만 ‘*’로 표시 plot(x, y, 'g:d') 데이터 값을 ‘♦’로 표시한 후, 녹색 점선으로 연결 5장 2차원 그래프
10
그래프 속성(property) 지정 plot 명령어에서 그래프 속성 이름과 속성값을 지정함으로써 선 두께, marker의 크기와 테두리 색, 채움 색을 지정할 수 있다. 속성 이름(Property name)과 해당 속성값(Property value) : 속성 이름 설명 가능한 속성 값 LineWidth 선의 굵기 지정 point 단위의 수(기본 값 0.5) MarkerSize marker의 크기 지정 point 단위의 수 MarkerEdgeColor marker의 테두리선 색 지정 이전 표의 색깔 지정자 사용 MarkerFaceColor marker의 배경색 지정 속성 지정의 예 plot(x,y,'-mo', ‘MarkerSize',12, 'MarkerEdgeColor','g', ‘MarkerFaceColor', 'y', 'LineWidth', 2) 원형 marker 표시, magenta색 실선 선 두께 2 point marker의 크기: 12 point. Marker는 녹색 테두리에 노란 색으로 채워짐 5장 2차원 그래프
11
주어진 데이터로부터 그래프 그리기 주어진 데이터를 이용하여 벡터를 생성하고, 이 벡터들을 이용하여 plot 명령어로 그래프를 그린다. 예) 어떤 회사의 1988~1994년 판매 데이터를 그래프로 표시하기 연도 1988 1989 1990 1991 1992 1993 1994 매출액 8 12 20 22 18 24 27 >> yr=[1988:1994]; >> sales=[ ]; >> plot(yr, sales, '--r*', 'LineWidth', 2, … ‘MarkerSize', 12) 5장 2차원 그래프
12
함수의 그래프 그리기 plot 명령어로 함수 y=f(x)를 그리기
원소별 연산을 이용하여 x 값 벡터에서의 f(x) 값들을 구하여 벡터 y를 생성한다. 생성된 두 벡터로부터 plot 명령어로 그래프를 그린다. 예) 정의역 -2≤x≤4에 대한 함수 y= xcos(6x)의 그래프 벡터 x의 원소 간격을 미세하게 생성함 >> x=[-2:0.01:4]; >> y=3.5.^(-0.5*x).*cos(6*x); >> plot(x, y) >> x=[-2:0.3:4]; 5장 2차원 그래프
13
그래프의 붙여넣기 그림 창(Figure Window)의 Edit 메뉴에서 Copy Figure를 선택하면, 그래프가 클립보드로 복사되어 다른 응용프로그램에서 붙여넣기로 삽입할 수 있다. 붙여넣기로 그림 삽입 5장 2차원 그래프
14
fplot 명령어로 함수 그래프 그리기 fplot 명령어로 함수 y=f(x)의 그래프를 그릴 수 있다.
fplot( 'function', limits, 'Line Specifiers') 그래프를 그릴 함수 x 의 정의역과 y 의 치역(옵션) 선과 marker의 종류 및 색 'function' fplot 명령어 안에 문자열로 직접 입력할 수 있다. 예) f(x)=8x2+5cos(x)라면, '8*x^2+5*cos(x)', or '8*z^2+5*cos(z)', '8*t^2+5*cos(t)'로 입력 가능. 미리 정의된 변수들은 함수에 포함될 수 없다. 예) 위의 함수에서 8을 어떤 변수에 할당한 후 이 변수를 함수에 포함시킬 수 있다. limits x의 정의역을 지정하는 두 원소의 벡터 [xmin, xmax], 또는 x의 정의역과 y축의 경계값을 지정하는 네 원소 벡터, [xmin, xmax, ymin, ymax]이다. Line specifier : 선 지정자와 동일 5장 2차원 그래프
15
fplot에 의한 함수 그래프 그리기 예) -3≤x≤3에 대해 함수 y = x2 + 4sin(2x)-1 의 그래프 그리기
>> fplot( 'x^2+4*sin(2*x)-1', [-3,3] ) 예) -5≤x≤5에 대해 함수 y = sin(t2)/t2 의 그래프 그리기 >> func='sin(t^2)/t^2' ; fplot( func, [-5, 5] ) 5장 2차원 그래프
16
한 그래프에 여러 곡선 출력하기 예) plot(x, y, '-r', u, v, '--b', t, h, 'g:')
한 그래프에 여러 곡선을 표시하는 세 가지 방법 : 1. plot 명령어 속에 표시할 곡선 데이터를 나열하는 방법 2. hold on, hold off 명령어를 사용하는 그래프를 계속 그리는 방법 3. line 명령어를 사용하는 방법 plot 명령어를 이용한 다중 그래프 출력 plot( X1, Y1, [LineSpec1], X2, Y2, [LineSpec2], X3, Y3, [LineSpec3] ) (X1, Y1)과 (X2, Y2), (X3, Y3) 등 세 곡선을 같은 그림 창에 나타낸다. LineSpec을 각각 지정하지 않는 경우, MATLAB이 각 곡선의 구분을 위해 곡선 색깔을 자동으로 다르게 표시한다. 예) plot(x, y, '-r', u, v, '--b', t, h, 'g:') (x, y) 곡선은 빨간 실선, (u, v) 곡선은 파란 파선, (t, h) 곡선은 녹색 점선으로 한 그래프에 출력된다. 5장 2차원 그래프
17
예제 5.1 함수와 도함수의 그래프 그리기 -2≤x≤4에 대해 함수 y = 3x3 - 26x + 10과 이 함수의 1차 도함수 및 2차 도함수 그래프를 같은 그림 창에 표시하라. 풀이) y' =9x2 – 26, y'' = 18x x=[-2:0.01:4]; y=3*x.^3-26*x+6; yd=9*x.^2 - 26; ydd = 18*x; plot( x, y, '-b', x, yd, '--r', x, ydd, ':k' ) 5장 2차원 그래프
18
hold on/off를 이용한 다중 그래프 hold on/off 명령어를 이용한 다중 그래프 작성
plot 명령어를 이용하여 첫 번째 그래프를 그린다. hold on 명령어를 입력한다. hold on 명령어는 첫 번째 그래프가 그려진 그림 창을 열린 채로 유지하며 축의 속성과 형식지정도 그대로 유지한다. 이후부터 plot 명령어를 추가하면 현재 그래프에 곡선이 추가된다. hold off 명령어를 입력하면, plot 명령어를 수행할 때마다 이전 그래프를 지우고 축의 속성을 초기화하는 초기설정 모드(default mode)로 MATLAB을 원상회복시킨다. x=[-2:0.01:4]; y=3*x.^3-26*x+6; yd=9*x.^2 - 26; ydd = 18*x; plot(x, y, '-b') hold on plot( x, yd, '--r‘) plot( x, ydd, ':k‘) hold off 5장 2차원 그래프
19
line 명령어를 이용한 다중 그래프 (1/2) 이미 존재하는 그래프에 line 명령어를 이용하여 곡선을 추가로 더 표시할 수 있다. line 명령어의 형식은 다음과 같다: plot(X, Y, ‘PropertyName’, PropertyValue) (옵션)선 종류와 색, 두께, 데이터 표식의 모양과 크기, 표식의 테두리선 색 및 배경색 등을 지정하는 데 사용할 수 있는 속성과 값 line 명령어는 선 지정자를 갖지 않지만, PropertyName과 PropertyValue를 이용하여 선 종류와 색, 데이터 표식 등을 지정할 수 있다. 속성은 옵션이며, 아무 것도 입력하지 않으면 기본 속성 및 값들을 이용한다. 예를 들어 line(x, y, 'linestyle', '--', 'color', 'r', 'marker', 'o') 위 명령어는 기존 그래프에 원형 marker와 빨간 파선의 곡선을 추가한다. plot 명령어는 실행될 때마다 새로운 그래프를 시작하는 반면, line 명령어는 기존 그래프에 선들을 추가한다. 여러 곡선을 한 그래프에 그리려면, plot 명령어를 먼저 실행하고 line 명령어로 곡선을 추가한다. 5장 2차원 그래프
20
line 명령어를 이용한 다중 그래프 (2/2) line 명령어를 plot 명령어보다 먼저 입력하면 에러 메시지가 출력된다.
x=[-2:0.01:4]; y=3*x.^3-26*x+6; yd=9*x.^2 - 26; ydd = 18*x; plot(x, y, 'LineStyle', '-', 'color', 'b') line(x, yd, 'LineStyle', '--', 'color', 'r') line(x, ydd, 'LineStyle', ':', 'color', 'k') 5장 2차원 그래프
21
그래프의 형식 지정 plot 명령어와 fplot 명령어는 기본 형태로 그래프를 출력한다. 따라서 그래프가 특정한 모양을 갖도록 하거나 추가 정보 표시를 위해서는 그래프 형식 지정이 필요하다. 격자(grid) 표시하기, 축 범위 재설정 하기 축 라벨과 그래프 제목, 범례(legend), 텍스트 라벨 등 추가하기 그래프 형식 지정 방법 plot 또는 fplot 명령어 실행 후, MATLAB 형식지정 명령어를 사용하는 방법. 이 방법은 plot 명령어가 스크립트 파일에 포함되어 있을 때 유용하며, 프로그램이 실행될 때마다 지정한 형식이 적용된 그래프가 그려진다. 그림 창의 그래프 편집기(Plot Editor)를 이용하여 대화식으로 지정하는 방법. 그래프가 생성된 후 그래프 편집기로 해당 그래프에 대해 형식 지정을 하므로, 해당 그래프에 대해서만 지정한 형식이 유효하며, 그래프가 새로 생성되면 형식지정을 다시 해야 한다. 5장 2차원 그래프
22
MATLAB 형식 지정 명령어 명 령 설 명 gtext(‘텍스트’) text(x,y, ‘텍스트’) title(‘텍스트’)
마우스로 ‘텍스트’를 그래프내의 원하는 위치에 놓는다. (x,y) 위치에 ‘텍스트’의 첫 글자가 위치하도록 표시한다. title(‘텍스트’) 그래프 윗부분에 ‘텍스트’를 제목으로 표시한다. xlabel(‘텍스트’) ylabel(‘텍스트’) 그래프의 가로축에 ‘텍스트’를 축 라벨로 표시한다. 그래프의 세로축에 ‘텍스트’를 라벨로 표시한다. axis axis( [xmin xmax ymin ymax] ) : 좌표축 범위 지정 axis [tight/normal/equal] : 좌표축 scaling 및 모양조정 grid [on/off] 그래프 바탕에 격자(grid)를 표시하거나 지운다. hold [on/off] 현재 그래프와 좌표계 특성을 유지한 채, 새로운 그래프를 추가하거나, 기본설정으로 새로운 그래프를 생성. [x,y]=ginput(n) 마우스로 그래프에서 점을 선택하여 그 점의 (x, y) 좌표를 읽어 벡터 x, y에 저장한다. n은 읽을 점의 개수이다. legend(‘s1’, ‘s2’, …, pos) 선 종류와 입력한 문자열을 지정한 위치(pos)에 표시한다. 5장 2차원 그래프
23
legend(‘text1’, ‘text2’, …, pos)
그래프 형식 지정 명령어 그래프 제목을 그림 상단에 표시한다. 그래프 안에 텍스트를 표시한다. text명령어는 그래프의 좌표로 (x, y) 위치에, gtext는 마우스를 클릭한 위치에 텍스트 첫 글자의 왼쪽 하단모서리가 놓이도록 한다. 곡선의 출력순서대로 text를 입력하면 곡선 종류와 입력한 텍스트를 범례로 그래프에 표시한다. 표시 위치는 pos에 의해 결정된다. pos=-1 : 우측 경계선 밖 pos=1~4 : 우측 상단부터 우측 하단까지 시계반대방향 순서로 그래프 안쪽 pos=0 : 우측 상단에 그래프와 안 겹치게 xlabel(‘텍스트’) ylabel(‘텍스트’) title(‘텍스트’) text(x, y, ‘텍스트’) gtext(‘텍스트’) legend(‘text1’, ‘text2’, …, pos) title legend xlabel pos=0 pos=1 pos=2 pos=4 pos=3 x, y 좌표축 부근에 축 라벨을 붙인다. 5장 2차원 그래프
24
title, text, xlabel에서의 텍스트 형식지정
xlabel, ylabel, title, text, legend 명령어에 포함된 텍스트 문자열의 글자 폰트와 크기, 위치(위첨자, 아래첨자), 모양(이탤릭, 볼드 등), 글자 색 등을 지정하여 화면에 표시할 수 있다. 더 자세한 내용은 도움말 창의 Text와 Text Properties 항목을 참조한다. 문자열의 형식은 문자열 안에 수정자(modifier)를 추가하거나 명령어 옵션인 PropertyName과 PropertyValue 인자들을 문자열 다음에 추가하여 조정할 수 있다. 수정자(modifier) Modifier 효과 \bf 볼드체 \it 이탤릭체 \rm 로만(보통)체 \fontname{폰트이름} 폰트 지정 \fontsize{폰트 크기} 폰트 크기 지정 \color{색깔이름} 폰트 색깔 지정 수정자는 해당 문자열의 삽입한 위치 이후의 문자에 대해서만 효력을 미친다. 문자열 중 일부 텍스트만 수정하려는 경우, 수정할 텍스트를 수정자 뒤에 중괄호 { } 안에 삽입하면 된다. 폰트 색깔이름: blue, magenta, … 5장 2차원 그래프
25
문자열 내에서의 텍스트 형식지정 위 첨자와 아래첨자 그리스 문자
_(밑줄 글자)나 ^ 뒤의 낱개 글자를 아래 첨자나 위 첨자로 출력시킨다. _나 ^ 다음에 여러 개의 연속된 글자들을 중괄호 { } 속에 표시하면 여러 개의 글자를 아래 첨자나 위 첨자로 표시할 수 있다. 그리스 문자 문자열 안의 ‘\그리스 문자이름’은 실행 시 그리스 문자로 변환되어 출력된다. 그리스 문자이름을 전부 영어 소문자로 표기하면 그리스 문자가 대문자, 소문자로 표기하면 그리스 문자가 대문자로 출력된다. 문자열에서의 표기 그리스 문자 \alpha \beta \gamma \theta \pi \sigma 문자열에서의 표기 그리스 문자 \Phi \delta \Gamma \Lambda \Omega \Sigma 5장 2차원 그래프
26
문자열 내에서의 텍스트 형식지정 '\fontname{Times New Roman}
'\fontname{휴먼옛체}\fontsize{18}\color{red}1자유도 감쇠진동' '\fontname{Times New Roman} \fontsize{15}x(\itt\rm)=3.5^{-0.5\itt} \rmcos(2\pi\itt\rm)' 5장 2차원 그래프
27
속성 인자를 이용한 텍스트 형식 지정 xlabel, ylabel, title, text 명령어 안에서 문자열 뒤에 옵션인 PropertyName과 PropertyValue 인자를 추가하여 출력되는 텍스트의 형식을 지정할 수도 있다. 예) PropertyName은 문자열로 입력되며, PropertyValue는 속성값 종류에 따라 수 또는 문자열로 입력한다. PropertyName과 가능한 PropertyValue에 대한 일부 예를 다음 슬라이드에 표시하였으며, 나머지는 도움말을 참조한다. text( x, y, ‘텍스트 문자열’, XPropertyName, PropertyValue ) 5장 2차원 그래프
28
속성 인자의 예 PropertyName과 PropertyValue 인자의 예 Rotation FontAngle FontName
속성명 설명 가능한 속성값 Rotation 텍스트의 방위(orientation)를 지정함 스칼라(), 초기설정 값= 0 FontAngle 글자를 이탤릭체로 할 지를 지정함 normal (default), italic FontName 텍스트의 폰트를 지정함 시스템에서 제공하는 폰트명 FontSize 폰트의 크기를 지정함 스칼라(단위: point) 초기설정 값=10 FontWeight 글자의 굵기를 지정함 light, normal(default), bold Color 텍스트의 색을 지정 색 지정자(5.1절 참조) BackgroundColor 배경색을 지정함(직사각형 영역) EdgeColor 텍스트를 둘러싼 직사각형 글상자의 테두리 색을 지정함 초기설정 값: 없음 LineWidth 텍스트를 둘러싼 직사각형 글상자의 테두리선의 두께를 지정함 초기설정 값: 0.5 5장 2차원 그래프
29
axis 명령어와 grid 명령어 (1/2) axis 명령어는 좌표축의 범위와 모양을 변경할 때 사용된다.
MATLAB은 벡터 x와 y의 원소들 중에서 최소값과 최대값에 근거한 경계값에 따라 자동으로 좌표축을 설정하므로, 때로는 좌표축을 재조종할 필요가 있을 수 있다. 예) % 그래프 그리기 x = 0: 0.02: pi/2; plot(x, tan(x), '-ro') axis([0 pi/ ]) % 최대값에 맞추어 설정된 좌표축의 재설정 5장 2차원 그래프
30
axis 명령어와 grid 명령어 (2/2) axis 명령어의 가능한 몇 가지 형태 grid 명령어
axis([xmin, xmax, ymin, ymax]) 좌표축 범위를 xmin~xmax, ymin~ymax로 지정 axis tight 좌표축 범위를 데이터 범위에 맞춤 axis equal 데이터 단위가 모든 방향으로 같도록 aspect ratio를 맞춘다. axis normal 기본 모우드로 설정한다. grid 명령어 grid on 그래프에 격자선(grid)을 추가함 grid off 그래프에서 격자선(grid)을 제거함 5장 2차원 그래프
31
그래프 형식지정 예 5장 2차원 그래프
32
단위 원 그리기 반지름이 1인 단위 원 그리기 % 데이터 생성( x=cos , y=sin , 0≤ ≤2 )
theta = linspace(0, 4*pi, 100); x=cos(theta); y=sin(theta); % 원과 격자선 그리기 plot(x, y) grid on % 좌표축 조정 axis equal 5장 2차원 그래프
33
그래프 편집기를 이용한 형식지정 그림 창에서 그래프 편집기를 이용하여 대화식으로 그래프를 편집할 수 있다.
Figure Toolbar의 화살표(Edit Plot)를 클릭하면 편집모드가 되며, 편집대상 주위에 검은 점들이 표시된다. 편집할 개체를 선택하여 더블 클릭하면, 해당 개체의 속성 Figure Toolbar 을 변경할 수 있는 Property Editor 창이 그림 창 밑에 나타난다. 라벨, 범례 등은 마우스로 드래깅하여 위치를 바꿀 수 있다. 5장 2차원 그래프
34
속성 편집창(Property Editor)
Property Editor 창에서 해당 그래프 요소의 속성을 편집할 수 있다. Figure Toolbar 우측 끝의 ‘Show Edit Tools’ 버튼을 눌러도 속성편집창이 나타난다. Show Edit Tools 5장 2차원 그래프
35
그래프 편집기를 이용한 형식지정 그림 창의 View메뉴에서 Plot Edit Toolbar를 체크하면 Plot Edit Toolbar가 메뉴 밑에 표시되어 개체를 수정하거나 새로운 개체를 추가할 수 있다. 그림 창의 Insert 메뉴를 이용하여 다양한 그래프 개체들을 추가할 수 있다. Plot Edit Toolbar 5장 2차원 그래프
36
로그축 그래프 과학/공학 응용분야에서는 한 축 또는 두 축 모두 로그 눈금인 그래프가 종종 필요하다. 로그 눈금은 넓은 범위의 데이터 값을 나타내는 데 적절하다. 또 주어진 수치 데이터의 특성을 파악하거나 수학식으로 모델링할 때 적합한 식을 확인하는데도 필요하다 (8.2.2절 참조) 로그축 그래프를 그리기 위한 MATLAB 명령어: 로그축 그래프에서도 plot 명령어에서와 같이 선 지정자와 속성 이름, 속성 값 등을 옵션으로 추가할 수 있다. 로그축 그래프에서는 0과 음수의 로그가 정의되지 않으므로 수 0과 음수는 로그 눈금에서 그릴 수 없다. semilogy(x, y) x축이 선형 눈금이고, y축이 상용로그(밑이 10) 눈금인 좌표계에서 x에 대한 y의 그래프를 그림 semilogx(x, y) x축이 상용로그(밑이 10) 눈금이고 y축이 선형 눈금인 좌표계에서 x에 대한 y의 그래프를 그림 logog(x, y) 두 축이 모두 상용로그(밑이 10) 눈금인 좌표계에서 x에 대한 y의 그래프를 그림 5장 2차원 그래프
37
로그축 그래프 예 함수 y=e(-0.2x+10) 0.1≤x≤60
>> x=linspace(0.1,60,1000);y=2.^(-0.2*x+10);semilogy(x,y), xlabel('선형축'),ylabel('선형축'),gtext('\fontsize{14}\color{blue}y=2^{-0.2*x+10}'),gtext('\fontsize{12}\color{magenta}x, y축 모두 선형축인 경우') >> x=linspace(0.1,60,1000);y=2.^(-0.2*x+10);semilogy(x,y), xlabel('선형축'),ylabel('로그축'),gtext('\fontsize{14}\color{blue}y=2^{-0.2*x+10}'),gtext('\fontsize{12}\color{magenta}x축은 선형축 y축은 로그인 경우') >> >> x=linspace(0.1,60,1000);y=2.^(-0.2*x+10);loglog(x,y), xlabel('로그축'),ylabel('로그축'),gtext('\fontsize{14}\color{blue}y=2^{-0.2*x+10}'),gtext('\fontsize{12}\color{green}\bfx, 두 축 모두 로그축인 경우') 5장 2차원 그래프
38
오차막대(error bar)를 가진 그래프
이론모델에 의한 수치데이터에는 입력 인자의 정확도와 사용된 수학모델의 가정에 따라 오차 또는 불확실성(uncertainty)이 존재하며, 실험에서 얻은 측정 데이터에도 오차가 포함되어 있다. 데이터에 포함된 불확실성, 즉 오차를 그래프에 표시하기 위해 오차막대(error bar)를 이용할 수 있다. 오차막대는 데이터 점이 나타내는 값과 관련된 오차의 크기를 데이터 점에 짧은 수직선으로 나타낸 것이다. 5장 2차원 그래프
39
errorbar 명령어 errorbar(x, y, e) : 그래프의 각 데이터 점에서 [y-e(i) y+e(i)]의 오차막대를 가지므로 오차막대는 데이터 점에 대해 대칭이다. errorbar(x, y, L, U) : 각 데이터 점에서 [y-L(i) y+U(i)] 길이의 오차 막대를 가지므로 오차막대는 각 데이터 점에 대해 비대칭이다. 네 벡터의 length는 모두 동일해야 한다. errorbar( x, y, e ) 데이터 점들의 (x, y) 좌표 벡터 각 데이터 점에서의 오차 값을 가진 벡터 errorbar( x, y, d, u ) 각 점에서의 오차의 하한값을 가진 벡터 각 점에서의 오차의 상한값을 가진 벡터 5장 2차원 그래프
40
특수 그래프 (1/4) MATLAB은 다양한 그래프를 생성할 수 있다. MATLAB으로 그릴 수 있는 그래프들 중 일부를 알아보자. 더 자세한 정보는 도움말 창의 Graphics 항목에서 “Basic Plots and …” 또는 “Specialized Plotting”을 참조한다. 5장 2차원 그래프
41
특수 그래프 (2/4) x=[1988:1994]; y=[8 12 20 22 18 24 27]; 세로 막대 그래프
특수 그래프 (2/4) 그래프 종류 그래프 예 프로그램 세로 막대 그래프 (Vertical Bar Plot) 함수 형식: bar(x, y) x=[1988:1994]; y=[ ]; bar(x, y, 'r') % x 위치에 y 크기 xlabel('Year') ylabel('Sales (Millions)') 가로 막대 그래프 (Horizontal Bar Plot) 함수 형식: barh(x, y) barh(x, y) % x 위치에 y 크기 xlabel('Sales (Millions)') ylabel('Year') 5장 2차원 그래프
42
특수 그래프 (3/4) x=[1988:1994]; y=[8 12 20 22 18 24 27]; 계단 그래프
특수 그래프 (3/4) 그래프 종류 그래프 예 프로그램 계단 그래프 (Stairs Plot) 함수 형식: stairs(x, y) x=[1988:1994]; y=[ ]; stairs(x, y) xlabel('Year') ylabel('Sales (Millions)') 스템 그래프 (Stem Plot) 함수 형식: stem(x, y) stem(x, y) xlabel('Sales (Millions)') ylabel('Year') 5장 2차원 그래프
43
특수 그래프 (4/4) 파이 차트(pie chart)는 서로 상관관계가 있는 어떤 양들의 상대적인 크기를 시각화하는 데 유용하다. 예를 들어, 어떤 학급 학생들의 성적 분포를 파이 차트로 나타낼 수 있다. MATLAB이 자동으로 색을 다르게 그린다. 성적(A, B, …)은 그래프 편집기로 추가하였다. 성 적 A B C D E 학생 수 11 18 26 9 5 파이 그래프 (Pie Plot) 함수 형식: pie(x) grd=[ ]; pie(grd) title('Class Grades') 5장 2차원 그래프
44
히스토그램(Histogram)의 생성 히스토그램은 주어진 데이터의 전체 범위를 작은 구간(계급)들로 나누고 각 구간에 속하는 데이터의 개수(빈도수)를 세로막대로 나타내어 데이터의 크기별 분포를 보여준다. 히스토그램에서 막대의 폭은 해당 구간의 폭과 같고 막대의 높이는 각 구간에 속하는 데이터 개수(빈도수)에 해당된다. 히스토그램은 hist 명령으로 생성하며, 구간 폭을 등간격 또는 서로 다른 간격으로 그릴 수 있고, 각 구간(계급)의 중앙 값을 지정할 수도 있다. hist( y ) y는 데이터 값 벡터. MATLAB이 y의 데이터 값 범위를 10 개의 등간격 구간으로 나눈 뒤, 각 구간의 빈도수를 막대그래프로 표시한다. nbins(스칼라)로 구간의 수를 지정할 수 있다. MATLAB이 nbins개의 등간격 구간을 만든다. hist( y, nbins ) hist( y, x ) x는 각 구간의 중앙 값들을 원소로 갖는 벡터이다. 각 구간의 경계는 두 중앙 값 사이의 중간 값이다. [n, x]=hist( y ) [n, x]=hist( y, nbins ) n=hist ( y, x ) n은 각 구간의 빈도수(데이터 개수) 벡터, x는 구간의 중앙 값을 갖는 벡터이다. 이 형태에서는 그래프가 그려지지 않으므로 bar(x, n) 5장 2차원 그래프
45
히스토그램 예제 (1/4) 오정동의 5월 낮 최고기온(C)에 대한 다음 데이터로 히스토그램을 그려라.
히스토그램 예제 (1/4) 오정동의 5월 낮 최고기온(C)에 대한 다음 데이터로 히스토그램을 그려라. 데이터 범위(12~30)를 10개의 등간격으로 나누면, 구간 크기는 1.8이 된다. 막대의 색깔은 그래프 편집기를 이용하거나 다음 명령어를 사용한다. set(findobj(gca,'Type', 'patch'), 'FaceColor', 'g') 5장 2차원 그래프
46
히스토그램 예제 (2/4) hist 명령어에 출력인자 n, x를 옵션으로 사용하면, 각 구간에 속하는 데이터 개수(빈도수)와 구간의 중앙값을 얻을 수 있다. 그러나 이 경우 그래프는 생성되지 않으므로, bar(x, n) 명령어를 사용하다. 구간 (계급) 12~ 13.8 13.8~15.6 15.6~17.4 17.4~19.2 19.2~21.0 21.0~22.8 22.8~24.6 24.6~26.4 26.4~28.2 28.2~30 중앙값 x 12.9 14.7 16.5 18.3 20.1 21.9 23.7 25.5 27.3 29.1 도수 n 1 3 2 5 6 4 5장 2차원 그래프
47
히스토그램 예제 (3/4) 데이터 범위를 세 단계로 지정하고자 한다면, hist(y,3)을 실행시킨다.
히스토그램 예제 (3/4) 데이터 범위를 세 단계로 지정하고자 한다면, hist(y,3)을 실행시킨다. 구간(계급) 12≤ y ≤18 18< y ≤24 24 < y ≤ 30 중앙값 x 15 21 27 도수 n 9 6 5장 2차원 그래프
48
히스토그램 예제 (4/4) 구간(계급)의 중앙값들을 원소로 가진 벡터 x를 이용하여 히스토그램을 그리려면, hist(y,x)를 실행시킨다. 중앙값 x 14 20 24 28 구간(계급) 12≤y≤17 17<y≤22 22<y≤26 26<y≤30 도수 n 6 5 5장 2차원 그래프
49
randn과 hist 명령어의 사용 예 >> x = -2:0.5:2; x =
>> n=length(x) n = 81 >> y=randn(10000, 1); >> hist(y,x) >> x = -2:0.5:2; x = >> n=length(x) n = 9 >> y=randn(1000,1); hist(y, x) 5장 2차원 그래프
50
rand 명령어와 hist 명령어의 사용 예 >> x = 0:0.1:1; >> length(x)
p = randperm(n) : 1에서 n까지의 정수들의 무작위 순열벡터를 돌려준다. >> x=randperm(6) x = >> x = 0:0.1:1; >> length(x) ans = 11 >> y=rand(5000,1); >> hist(y,x) >> rand(3) 5장 2차원 그래프
51
polar(theta, radius, 'line specifiers')
극좌표 그래프 극좌표는 평면 상의 한 점의 위치를 각도 와 이 점까지의 반경(거리) r 로 정의한다. 함수를 극좌표로 그리기 위해서는 polar 명령어를 사용한다. polar 명령어의 형식 polar(theta, radius, 'line specifiers') 데이터 점들의 좌표 벡터 선과 marker의 종류와 색 정의. 예) ‘:r’, ‘-g’ r 주어진 정의역에 대한 함수 r =f( )의 극좌표 그래프 그리기 주어진 값의 범위에 대해 벡터를 생성한다. 원소별 연산을 이용하여 의 각 원소에 대해 r = f( ) 값을 계산하여 r 벡터를 생성한다. 생성된 두 벡터 , r 을 polar 명령어의 입력인자로 하여 그래프를 그린다. 5장 2차원 그래프
52
극좌표 그래프 예 0≤ ≤2에 대해 r =3cos2(0.5 )+ 의 극좌표 그래프를 그려라.
t=linspace(0, 2*pi, 200); r=3*cos(0.5*t).^2 + t; polar(t, r) t = 0:.01:2*pi; polar( t, sin(2*t).*cos(2*t), '--r‘ ) 0≤t≤2에 대해 r =sin(2t)cos (2t )의 그래프를 그려라. 5장 2차원 그래프
53
같은 페이지에 여러 그래프 그리기 (1/2) subplot(m, n, p)
같은 페이지에 여러 그래프 그리기 (1/2) subplot 명령어를 이용하여 동일한 페이지에 여러 개의 그래프를 그릴 수 있다. Subplot 명령어의 형식 subplot(m, n, p) 그림 창을 m×n의 작은 사각형 그래프 영역으로 나누고, 각 그래프 영역에 대해 첫 줄부터 마지막 줄까지 왼쪽에서 오른쪽 순서대로 차례로 일련번호를 부여한 후, p 번째 영역을 그래프 출력 대상 영역으로 만든다. 즉, 이 명령어 뒤에 오는 plot 명령어와 형식지정 명령어는 p 번째 영역에 적용된다. 예) subplot(3, 2, 1)은 우측 그림과 같이 세 줄과 두 칸으로 배열된 6개의 그래프 영역을 만 든 후, 첫 번째 그래프 영역을 활성화한다. (3,2,1) (3,2,2) (3,2,3) (3,2,4) (3,2,5) (3,2,6) 5장 2차원 그래프
54
같은 페이지에 여러 그래프 그리기 (2/2) subplot 명령어 사용 예 5장 2차원 그래프
55
여러 개의 그림 창(Figure Window) 열기
plot과 같은 그래프 생성 명령어가 실행되면, 그림 창이 새로 열리거나 이미 열려있는 그림 창의 그래프를 대체한다. 이때 그림 창의 제목(Figure window title)은 항상 “Figure 1”이 된다. 기존의 그림 창을 그대로 두고 추가로 그림 창을 열려면, figure 명령어를 사용한다. figure 명령어가 입력될 때마다 새 그림 창이 만들어지며, 그림 창 제목은 생성 순서에 따라 Figure 2, Figure 3, … 등이 된다. 그래프 생성 명령어는 활성창(active window)이나 현재창(current window)으로 불리는 가장 최근에 열린 그림 창에 새 그래프를 출력한다. figure 명령어의 형식 Figure window title figure figure(n) 새로운 그림 창을 연다. 창 제목의 번호는 생성된 순서대로 일련번호가 붙여진다. 창 제목 번호가 n인 새로운 그림 창을 열거나(신규 생성), 활성창으로 만든다(특정 창 지정). 5장 2차원 그래프
56
여러 개의 그림 창 열기 예제 (1/3) figure 명령어를 이용한 여러 그림 창 열기 5장 2차원 그래프
57
여러 개의 그림 창 열기 예제 (2/3) figure(n) 명령어를 이용한 여러 그림 창 열기
여러 개의 그림 창 열기 예제 (2/3) figure(n) 명령어를 이용한 여러 그림 창 열기 스크립트 파일로 여러 그림 창에 그래프를 출력하는 경우, figure(n) 명령어 대신 figure 명령어를 여러 번 사용하면, 스크립트 파일을 실행할 때마다 새 그림 창을 계속 만들게 되므로 주의가 필요하다. 5장 2차원 그래프
58
여러 개의 그림 창 열기 예제 (3/3) 그림 창은 close 명령어로 닫을 수 있다. 명령어 형식은 다음과 같다.
여러 개의 그림 창 열기 예제 (3/3) 그림 창은 close 명령어로 닫을 수 있다. 명령어 형식은 다음과 같다. close 현재 그림 창을 닫는다. close(n) n번째 그림 창을 닫는다. close all 열린 모든 그림 창을 닫는다. 그림 창의 속성을 이용하여 제목을 변경하거나 번호를 표시하지 않을 수도 있다. 5장 2차원 그래프
59
응용 예제 5.2 피스톤-크랭크 장치 (1/3) 그림의 피스톤-커넥팅로드-크랭크 장치에서, 크랭크가 500 rpm의 일정한 속도로 회전하고 있다. 크랭크 1회전에 대해, 피스톤의 위치와 속도, 가속도를 계산하고 각각의 그래프를 그려라. 단, 세 그래프는 같은 페이지에 출력하며, t =0에서 =0로 한다. 크랭크의 각속도 =일정 ⇒ =0 ⇒ 크랭크의 각도 ⇒ d1 =cos , h =r sin ⇒ ⇒ 피스톤의 위치 ⇒ 피스톤의 속도 ⇒ 피스톤의 가속도 5장 2차원 그래프
60
응용 예제 5.2 해석 프로그램 (2/3) % 응용예제 5.2 해석 프로그램
응용 예제 5.2 해석 프로그램 (2/3) % 응용예제 5.2 해석 프로그램 THDrpm=500; r=0.12; c=0.25; % 각속도, r, c를 정의함 THD=THDrpm*2*pi/60; % 각속도 단위를 rad/s로 변환 tf=2*pi/THD; % 크랭크 1회전에 걸리는 시간 계산 t=linspace(0,tf,200); % 200개의 원소를 갖는 시간벡터 생성 TH=THD*t; % t에 대해 를 계산함 d2s=c^2-r^2*sin(TH).^2; % 에 대해 d22을 계산함 x=r*cos(TH)+sqrt(d2s); % 에 대한 x 계산 xd=-r*THD*sin(TH)-(r^2*THD*sin(2*TH))./(2*sqrt(d2s)); % 에 대한 속도 계산 xdd=-r*THD^2*cos(TH)-(4*r^2*THD^2*cos(2*TH).*d2s+ (r^2*sin(2*TH)*THD).^2)./(4*d2s.^(3/2)); % 에 대한 속도 계산 % 위치, 속도, 가속도 그래프를 한 페이지에 그리기 subplot(3,1,1), plot(t, x), grid, xlabel(‘시간 (s)'), ylabel(‘\color{red}위치 (m)') title('\bf\fontsize{12}피스톤-커넥팅로드-크랭크 장치의 위치, 속도, 가속도 변화') subplot(3,1,2), plot(t, xd), grid, xlabel('시간 (s)'), ylabel(‘\color{magenta}속도 (m/s)') subplot(3,1,3), plot(t,xdd), grid, xlabel('시간 (s)'), ylabel(‘\color{blue}가속도 (m/s^2)') 5장 2차원 그래프
61
응용 예제 5.2 결과 그래프 (3/3) 피스톤의 운동방향이 바뀌는 피스톤 행정의 양 끝점에서 속도가 0임을 알 수 있다.
응용 예제 5.2 결과 그래프 (3/3) 피스톤의 운동방향이 바뀌는 피스톤 행정의 양 끝점에서 속도가 0임을 알 수 있다. 가속도는 피스톤이 오른쪽 끝에 있을 때 최대(왼쪽방향)이다. 5장 2차원 그래프
62
응용 예제 5.3 전기 쌍극자(Dipole) (1/3)
쿨롱 법칙에 의해 전하(charge) 한 개에 의한 한 점에서의 전기장(electric field) 벡터 E의 크기 E는 다음과 같다. + q r E 위에서 0는 유전상수, q는 전하의 크기, r은 전하와 점 사이의 거리이다. E의 방향은 전하와 점을 잇는 직선 방향이며, q가 양이면 q로부터 바깥쪽을 향하고, q가 음이면 q쪽으로 향한다. 동일한 크기의 양전하와 음전하가 어떤 거리만큼 떨어져 있을 때, 전기 쌍극자(electric dipole)가 형성된다. 임의의 점에서의 전기장 E는 각 전하로 인한 전기장을 중첩시켜 구할 수 있다. q=12ⅹ10-9 C인 전기 쌍극자가 우측 그림과 같이 형성되어 있다. x = -5 cm에서 x=5 cm까지 x축 상에서의 전기장의 크기를 구하고 그래프를 그려라. 5장 2차원 그래프
63
응용 예제 5.3 풀이 (2/3) x축의 임의의 점 (x, 0)에서의 전기장 E는 두 전하로 인한 전기장 벡터의 합, E = E- + E+ 과 같다. 전기장의 크기는 벡터 E의 길이이다. 문제 풀이 단계 1. x축 상의 점들의 좌표벡터 x를 생성한다. 2. x축의 각 점과 두 전하 사이의 거리를 계산한다. rmin rplus 3. 각 전하와 x축의 한 점을 잇는 방향의 단위벡터를 구한다. 4. 쿨롱법칙을 이용하여 각 점에서의 벡터 E_와 E+의 크기를 계산한다. 5. 크기와 해당 단위벡터를 곱하여 얻은 두 벡터를 E_와 E+를 더하여 벡터 E를 구한 후, 벡터 E의 크기(길이) E를 계산하고 x에 대해 그래프를 그린다. 5장 2차원 그래프
64
응용 예제 5.3 풀이 (3/3) 해석 프로그램 q=12e-9; epsilon0=8.8541878e-12;
응용 예제 5.3 풀이 (3/3) 해석 프로그램 q=12e-9; epsilon0= e-12; x=[-0.05:0.001:0.05]'; r_minS=(0.02-x).^2+0.02^2; r_min=sqrt(r_minS); r_plusS=(x+0.02).^2+0.02^2; r_plus=sqrt(r_plusS); e_minUV=[((0.02-x)./r_min), (-0.02./r_min)]; e_plusUV=[((x+0.02)./r_plus), (0.02./r_plus)]; E_minMAG=(q/(4*pi*epsilon0))./r_minS; E_plusMAG=(q/(4*pi*epsilon0))./r_plusS; E_min=[E_minMAG.*e_minUV(:,1), E_minMAG.*e_minUV(:,2)]; E_plus=[E_plusMAG.*e_plusUV(:,1), E_plusMAG.*e_plusUV(:,2)]; E=E_min + E_plus; E_MAG=sqrt(E(:,1).^2+E(:,2).^2); plot(x, E_MAG, 'k', 'LineWidth', 1) xlabel(‘x축에서의 위치 (m)', 'FontSize', 12) ylabel('전기장의 크기 (N/C)', 'FontSize', 12) title(‘\bf\fontsize{12}\color{blue}전기 쌍극자에 의한 전기장', 'FontSize', 12) 5장 2차원 그래프
65
5장 강의록 끝 5장 끝 5장 2차원 그래프
Similar presentations