복소수행렬의전치 (trnspose) (1/2) v 복소수벡터나복소수행렬을전치시키면, 복소수원소는모두공액복소수로바뀐다음에전치 (complex conjugte trnspose) 된다는점에주의. v 복소수벡터나복소수행렬을공액복소수변환없이단순히전치만시키고자하는경우에는.' 와같이마침표와따옴표를같이사용한다. >> v=[1+2i 3+4i] v = 1.0000+2.0000i 3.0000+4.0000i >> w=v' w = 1.0000-2.0000i 3.0000-4.0000i >> x=v.' x = 1.0000 + 2.0000i 3.0000 + 4.0000i >> C=[1 2+3i; 2-3i 4] C = 1 2+3i 2-3i 4 >> C ns = 1 2+3i 2-3i 4 >> C. ' ns = 1 2-3i 2+3i 4 2 장배열과행렬 1/53
복소수행렬의전치 (trnspose) (2/2) >> r = 1 : 3; >> C = r + r*i C = 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i >> Ct = C' Ct = 1.0000-1.0000i 2.0000-2.0000i 3.0000-3.0000i >> Cdt=C.' Cdt = 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i 2 장배열과행렬 2/53
벡터원소의주소지정 (Arry ddressing) v 행렬이나배열에서한개또는여러개의원소의위치를찾거나접근할수있다. 이것은행렬이나배열의일부원소들의값을갱신하거나계산에서특정원소를이용하려고할때, 또는일부원소들을새변수에할당하고자할때유용하게사용될수있다. v 벡터에서원소의주소는첫번째원소로부터해당원소의순서이다. 벡터 v 에서 v(k) 는 k 번째의벡터 v의원소를나타낸다. 즉, 벡터 v=[12 8 9 6 28] 에서 v(1)= )=12, v(3)= )=9, v(5)= )=28 이다. 벡터의한원소를나타내는 v(k) 는변수처럼사용할수있으므로수학식에도사용할수있다. >> v(3) ns = 9 >> v(3)= )=80; % 세번째원소의값변경 >> v(4)=v( )=v(3)/8+3 % 수학식을이용한네번째원소의변경 v = 12 8 80 13 28 2 장배열과행렬 3/53
벡터원소의주소지정예 >> VCT=[35 46 78 23 5 14 81 3 55] VCT = 35 46 78 23 5 14 81 3 55 >> VCT(4) ns = 23 % 네번째원소를출력함 >> VCT(6)= )=273 % 6 번째원소에새로운값을할당함 VCT= 35 46 78 23 5 273 81 3 55 >> VCT(2)+VCT( )+VCT(8) % 수학식에벡터원소를사용함 ns = 49 >> VCT(5)^VCT( )^VCT(8)+sqrt(VCT(7)))) ns = 134 2 장배열과행렬 4/53
행렬원소의주소지정 v 행렬원소의주소는원소가있는열 (row) 과행 (column) 의위치이다. 행렬 A 에서 A(r, c) 는행렬 A의 r 번째열과 c 번째행에위치한원소를나타낸다. é 5 10 9 8 ù v 행렬 A가 A = ê 이면, A(1,1)= )=5, A(2,2)= )=1, A(3,3)= )=3 이다. ê 18 1 7 11 êë 29 14 3 6 û >> A = [5 10 9 8; 18 1 7 11; 29 14 3 6]; % 3x4 행렬을생성함 >> A(3,1)= )=13 % 위치 (3,1) 의원소에새로운값을할당함 A = 5 10 9 8 18 1 7 11 13 14 3 6 >> A(2,1) = A(2,1)-A( A(2,4) A = 5 10 9 8 7 1 7 11 13 14 3 6 % 수학식에원소를사용함 2 장배열과행렬 5/53
콜론 (:) 을이용한벡터의주소지정 (1/2) v 콜론을이용하여벡터나행렬의일정범위의원소들을지정할수있다. v 벡터 v의경우 v(:) : 벡터 v의모든원소를열벡터로나타낸다. v(m:n) : 벡터 v의 m 번째원소에서 n 번째원소까지의원소들을나타낸다. end는벡터나행렬의마지막원소의주소를나타내는데사용되며, 벡터의경우 end는명령어 length( 벡터 ) 의실행결과와같은값을갖는다. >> v=[10 20 30 40 50]; >> v(3) ns = 30 >> w=v(2:4) w = 20 30 40 >> length(v) ns = 5 >> v=[10 20 30 40 50]; >> x=v(2:end) x = 20 30 40 50 >> y=v(2: length(v)) y = 20 30 40 50 >> v(3:end)= end)=0 v = 10 20 0 0 0 2 장배열과행렬 6/53
콜론 (:) 을이용한벡터의주소지정 (2/2) >> v=[10 20 30 40 50]; >> w = v(3 :-1 : 1) % v(3), v(2), v(1) 원소를가진벡터생성 w = 30 20 10 >> y=v(2:3:5) % v(2), v(5) 원소를가진벡터생성 y = 20 50 >> z =v( [1 3 4] ) % v(1), v(3), v(4) 원소를가진벡터생성 z = 10 30 40 >> vt=z( :) % 콜론에의한전체원소의선택은전치와동일효과 vt = 10 30 40 2 장배열과행렬 7/53
콜론을이용한행렬의주소지정 (1/2) v 콜론을이용하여행렬 A의일부행이나열을지정할수있다. A( :, n) 행렬 A의 n 번째열 (column) 의모든원소를가리킴 A(n, : ) 행렬 A의 n 번째행 (row) 의모든원소를가리킴 A(:, m:n) 행렬 A의 m ~ n 번째열 (column) 의모든원소를가리킴 A(m:n, :) 행렬 A의 m ~ n 번째행 (row) 의모든원소를가리킴 A(m:n, p:q) m ~ n 번째행과 p~q 번째열에해당하는원소를가리킴 A = é 2 ê ê16 ê ë 8 4 3 21 13 7 6 9 ù 11 5 û >> A =[2 4 13 9;16 3 7 11;8 21 6 5]; >> C = A(2:3, 1:3) C = 16 3 7 8 21 6 >> D=A(:, 2) >> E=A(1:2, :) D = 4 E = 3 2 4 13 9 21 16 3 7 11 2 장배열과행렬 8/53
콜른을이용한행렬의주소지정 (2/2) >> B=[ 9:-2:1; zeros(1, 3) 1 2; ones(2, 5)* )*2 ] B = 9 7 5 3 1 0 0 0 1 2 2 2 2 2 2 2 2 2 2 2 >> B(:, end) = 1 B = 9 7 5 3 1 0 0 0 1 1 2 2 2 2 1 2 2 2 2 1 >> C= B( [1 3], [1, 3:4] ) C = 9 5 3 2 2 2 v 행렬의벡터변환 >> D=[11 12 13;21 22 23] D = 11 12 13 21 22 23 >> v =D( D(:) v = 11 21 é11 12 13 ù 12 D = ê 22 ë21 22 23û 13 23 >> v=v v = 11 21 12 22 13 23 2 장배열과행렬 9/53
행렬의덧셈과뺄셈 v 같은크기의 ( 같은행과열의수를가진 ) 배열들에대한덧셈과뺄셈은같은위치의원소들을더하거나빼서구한다. A = é ê ë 11 21 12 22 13 23 ù, û B = éb ê ëb 11 21 b b 12 22 b b 13 23 ù û Þ A ± B = é ê ë 11 21 ± b ± b 11 21 12 22 ± b ± b 12 22 13 23 ± b ± b 13 23 ù û >> v = [3 6 2]; w=[9-1 5]; >> z = v + w z = 12 5 7 >> A=[2-3 7; 8 4 5]; >> B=[10 7 4; -11 15 1]; >> C = A - B C = -8-10 3 19-11 4 >> D = A + B D = 12 4 11-3 19 6 >> D-2 ns = 10 2 9-5 17 4 >> C * 2 ns = -16-20 6 38-22 8 행렬의덧셈이나뺄셈에스칼라가포함된경우, 행렬의모든원소에스칼라를더하거나뺀다. 3 장배열과행렬 10/35
배열의덧셈과뺄셈응용예 v 세학생의과목별중간고사및기말고사성적은다음표와같다. 세학생의각과목별평균점수와중간고사에대한성적향상점수를구하라. 이름 국어 중간고사 영어 수학 물리 국어 기말고사 영어 수학 물리 이스근 61 78 39 42 69 84 51 46 강후동 49 57 24 36 55 53 31 40 이숭기 92 97 89 84 96 97 92 90 >> M = [61 78 39 42; 49 57 24 36; 92 97 89 84]; % 중간고사성적 >> F = [69 84 51 46; 55 53 31 40; 96 97 92 90]; % 기말고사성적 >> T = 0.5*(M + F) % 학생별, 과목별총점구하기 T = 65.0000 81.0000 45.0000 44.0000 52.0000 55.0000 27.5000 38.0000 94.0000 97.0000 90.5000 87.0000 >> E = F M % 학생별, 과목별성적향상 E = 8 6 12 4 6-4 7 4 4 0 3 6 3 장배열과행렬 11/35
배열의곱셈 v MATLAB 에서행렬의곱은선형대수의규칙에따라행해진다. é A = ê ë Þ 11 21 12 22 é A B = ê ë 11 21 b b 13 23 11 11 ù, û + + éb ê B = êb ê ëb 12 22 b b 21 21 11 21 31 + + 13 23 b b b 31 b b 31 12 22 32 ù û 11 21 b b 12 12 + + 12 22 b b 22 22 + + 13 23 b b 32 32 ù û >> A = [ 1 4 3; 2 6 1; 5 2 8]; >> B = [5 4; 1 3; 2 6]; >> C = A*B T = 15 34 18 32 43 74 >> D = B*A??? Error using ==> mtimes Inner mtrix dimensions must gree. é1 4 3ù é5 4ù ê ê ê2 6 1 ê1 3 ê ê ë5 2 8û ë2 6û é1 5 + 4 1+ 3 2 ê = ê2 5 + 6 1+ 1 2 ê ë5 5 + 2 1+ 8 2 1 4 + 4 3 + 3 6 ù 2 4 + 6 3 + 1 6 5 4 + 2 3+ 8 6 û é15 ê = ê18 ê ë43 34 ù 32 74 û 3 장배열과행렬 12/35
행렬곱과벡터곱 (1/2) v 행렬의곱은교환법칙이성립하지않는다. 즉, AB BABA 이다. v 벡터곱 v w의경우, 두벡터의원소개수는같아야하고한쪽벡터가행벡터이면나머지벡터는열벡터이어야하며, 스칼라또는행렬을얻게된다. dot(, b) 내장함수는두벡터의행 열구분없이내적을구한다. éw ê ê ê ëw 1 ù û éw ê ê ê ëw [ v v v ] w = v w + v w + v w, w [ v v v ] 1 2 3 2 3 1 1 2 2 3 3 1 2 3 ù û 1 2 3 = éw1v ê êw2v ê ëw3v 1 1 1 w v 1 w v 2 w v 3 2 2 2 w v 1 w v 2 w v 3 3 3 3 ù û >> A = [ 6 2; 4 7]; B = [3 9; 5 1]; >> C = A*B, D = B*A % A*B B*A C = 28 56 47 43 D = 54 69 34 17 3 장배열과행렬 13/35
행렬곱과벡터곱 (2/2) >> v = [ 6 2 4 ]; w = [3; 9; 5]; >> x = v*w x = 56 v*w >> z = w*v w*v z = 18 6 12 54 18 36 30 10 20 >> dot(v, w) % v*w ns = 56 >> F=[1 3; 5 7]; G=[4 2; 1 6]; >> F*G ns = 7 20 27 52 >> G*F ns = 14 26 31 45 >> A=[2 5 7 0; 10 1 3 4; 6 2 11 5] A = 2 5 7 0 10 1 3 4 6 2 11 5 수와행렬의곱은 >> C = 3*A 행렬의각원소에 C = 수를곱해구한다. 6 15 21 0 30 3 9 12 18 6 33 15 >> D=A*3 D = 6 15 21 0 30 3 9 12 18 6 33 15 3 장배열과행렬 14/35
원소별 (Element-by-Element) 연산 v 행렬에대한곱셈과나눗셈은선형대수의법칙을따른다. 그러나두행렬의원소와원소사이의연산이필요한경우가많다. 덧셈과뺄셈은원래행렬의같은위치의원소끼리더하거나빼므로원칙적으로원소별연산에해당된다. v 원소별연산은다음과같이점뒤에연산기호를붙이면된다 :.* ( 원소별곱셈 ),.^ ( 원소별지수승 ),./ ( 우측나눗셈 ),.\ ( 좌측나눗셈 ) v 두벡터 v와 w가각각 v=[v 1, v 2, v 3 ], w=[w 1 w 2 w 3 ] 이라면, v.*w = [ v 1 w 1, v 2 w 2, v 3 w 3 ] v./w = [ v 1 /w 1, v 2 /w 2, v 3 /w 3 ] v.^w = [ v 1 w1, v 2 w2, v 3 w3 ] v 두행렬 A와 B에대해 é11 12 13 ù éb11 b12 b13 ù é11b11 12b12 13b13 ù A.* B = ê ê b b b = ê b b b ê 21 22 23 ê 21 22 23 ê 21 21 22 22 23 23 êë 31 32 33 û êë b31 b32 b 33 û êë 31b31 32b32 33b 33 û 3 장배열과행렬 15/35
행렬의원소별연산 A./ B = é ê ê ê ë 11 21 31 12 22 32 13 23 33 ù éb ê./ êb ê û ëb 11 21 31 b b b 12 22 32 b b b 13 23 33 ù é ê = ê ê û ë n n n é11 12 ù 13 ê n n n A.^ n = ê21 22 23 >> C=A./B ê n n n ë31 32 C = 33û 2.0000 1.5000 0.3000 é2 6 3ù 1.6667 4.0000 0.5714 A = >> A=[2 6 3; 5 8 4]; ê >> 2.^B ë5 8 4û >> B=[1 4 10; 3 2 7]; ns = é1 4 10ù >> A.*B B = 2 16 1024 ê ns = ë3 2 7 û 8 4 128 2 24 30 >> A*B 15 16 28??? Error using==> mtimes Inner mtrix dimensions must gree. 11 21 31 / b / b / b 11 21 31 12 22 32 / b / b / b 12 22 32 13 23 33 / b / b / b 13 23 33 ù û 3 장배열과행렬 16/35
원소별연산예 v 원소별연산은많은독립변수에서함수값을계산할때매우유용하다. 먼저독립변수의값들을벡터로정의하고이벡터를이용하여함수값을원소별연산을이용하여계산한다. y=2x 2-5x + 1 v y(x)= 2x 2-5x+ x+1 함수의값계산 >> x = 1:7 x = 1 2 3 4 5 6 7 >> y = 2*x.^2 5*x + 1 y = -2-1 4 13 26 43 64 >> plot(x, y) v y(x) = (x 3 + 5x)/( )/(4x 2 10) 의계산 >> x = [1:0.03:3]; >> y = (x.^3 + 5*x) *x)./(4*x.^2-10); >> plot(x, y) 2 4 6 3 장배열과행렬 17/35 y y 70 60 50 40 30 20 10 0-10 60 40 20 0-20 -40-60 -80-100 1 1.5 2 2.5 3 x x y=(x. 3 + 5x)/(4x 2-10)
내장함수에서의배열사용 (1/2) v MATLAB의내장함수는입력인자가배열인경우함수에의해정의된연산이배열의각원소에대해수행되도록만들어져있으므로, 함수를원소별로적용하는것으로생각할수있다. 따라서출력은입력인자배열의각원소를함수에대입하여얻은결과를해당원소로갖는배열이다. v cos(x) 함수의계산 >> x=[0:pi/ pi/6:2*pi] x = Columns 1 through 7 0 0.5236 1.0472 1.5708 2.0944 2.6180 3.1416 Columns 8 through 13 3.6652 4.1888 4.7124 5.2360 5.7596 6.2832 >> y=cos(x) y = Columns 1 through 7 1.0000 0.8660 0.5000 0.00000000-0.5000-0.8660-1.0000 Columns 8 through 13-0.8660-0.5000-0.00000000 0.5000 0.8660 1.0000 >> plot(x, y), grid on -1 0 1 2 3 4 5 6 3 장배열과행렬 18/35 1 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8
내장함수에서의배열사용 (2/2) v sqrt(x) 함수의계산 >> d=[1 4 9; 16 25 36; 49 64 81] d = 1 4 9 16 25 36 49 64 81 >> h=sqrt(d) h = 1 2 3 4 5 6 7 8 9 3 장배열과행렬 19/35
강의내용 v plot 명령어 v fplot 명령어 v 같은그래프에여러곡선출력하기 v 그래프의형식지정 v 로그축그래프 v 특수그래프 v 히스토그램 v 같은페이지에여러그래프그리기 v 다중그림창 v 응용예제 5 장 2 차원그래프 20/65
PLOT 명령어 v 정보를표현하는데그래프는매우유용한도구이다. MATLAB 에는여러유형의그래프를생성하는데사용할수있는많은명령어들이있다. u 그래프종류 : 선형축표준그래프, 로그및세미로그축그래프, 극좌표그래프, 막대그래프및계단그래프, 3 차원윤곽표면및망그래프등 u 그래프형식지정 : 선형태 ( 직선, 파선등 ), 색깔, 두께등지정. 그래프의제목과텍스트설명, 데이터표식 (mrker) 과격자선 (grid line) 추가. 여러개의곡선을한그래프에표시하기, 여러그래프를한페이지에나타내기. 범례 (legend) 표시하기등. v 이장에서는 MATLAB을이용하여여러유형의 2 차원그래프를생성하고그래프의형식을지정하는방법에대해기술한다. v 3 차원그래프는 9 장에서별도로다루기로한다. 5 장 2 차원그래프 21/65
그래프구성요소 Figure window title number Figure window title Plot title Legend Mrker Y xis lbel Text lbel X xis lbel 5 장 2 차원그래프 22/65
그래프생성프로그램예 x=[10:0.1:22]; y=95000./x.^2; xd=[10:2:22]; yd=[950 640 460 340 250 180 140]; plot(x,y, '-', 'LineWidth', 1.0) xlbel('\fontnme{ 돋움 } 거리 (cm)') ylbel('\fontnme{ 돋움 } 세기 (lux)') xis([8 24 0 1200]) title('\fontnme{ 바탕 }\bf거리함수인빛의세기 ', 'FontSize',14) text(14,700,'\fontnme{ 돋움 } 이론과실험의비교 ', 'EdgeColor','r','LineWidth',2) grid on, hold on plot(xd, yd, 'ro--', 'LineWidth', 1.0, 'MrkerSize', 10) legend('\fontnme{ 돋움 } 이론 ', '\fontnme{ 돋움 } 실험 ', 0) set(gcf, 'Nme', 'Fig. 5-8') %set(,'numbertitle', 'off') hold off 5 장 2 차원그래프 23/65
PLOT 명령어 v 2 차원그래프를생성하는데사용되는 plot 명령어의형식 : x : x 좌표값들을가진벡터 y : y 좌표값들을가진벡터 x, y 두벡터로부터형성되는순서쌍을그래프에점으로나타내고점들을직선으로잇는다. v 그래프예 plot(x, y) >> x=[1 2 3 5 7 7.5 8 10]; >> y=[2 6.5 7 7 5.5 4 6 8]; >> plot(x, y), grid on v 그래프의기본선색깔은파란색이다. 5 장 2 차원그래프 24/65
그래프형식지정자 v plot 명령어의옵션으로선색깔과종류, 데이터표식 (mrker) 모양등을지정할수있다. 옵션을사용하기위한 plot 명령어의형식 : plot(x, y, line specifiers', 'PropertyNme', PropertyVlue) 선과 mrker의모양 색지정 선의굵기, mrker의크기 테두리 배경색지정 선종류 실선 ( 기본 ) Solid line 파선 Dshed line 점선 Dotted line 일점쇄선 Dsh-dot line 지정자 - -- : -. 선색깔 red green blue cyn mgent yellow blck white 지정자 r g b c m y k w 5 장 2 차원그래프 Mrker 모양 지정자 plus 부호 + 원 o( 알파벳 ) 별표 * 점. / / / ^/v/</> /</> s x d x 25/65
그래프형식지정예 5 장 2 차원그래프 26/65
그래프형식지정자사용시유의할점 v 선택사항인지정자는 plot 명령어안에문자열로표시한다. v 여러개의지정자를문자열내에표시하는경우순서는상관없다. u plot(x, y) 파란실선 ( 기본설정 ) u plot(x, y, '--y') 노란파선 u plot(x, y, '*') plot(x, y, 'r') 빨간실선 연결선없이데이터값만 * 로표시 u plot(x, y, 'g:d')') 데이터값을 로표시한후, 녹색점선으로연결 5 장 2 차원그래프 27/65
그래프속성 (property) 지정 v plot 명령어에서그래프속성이름과속성값을지정함으로써선두께, mrker의크기와테두리색, 채움색을지정할수있다. v 속성이름 (Property nme) 과해당속성값 (Property vlue) : LineWidth 속성이름 MrkerSize MrkerEdgeColor MrkerFceColor 설명 선의굵기지정 mrker의크기지정 mrker의테두리선색지정 mrker의배경색지정 가능한속성값 point 단위의수 ( 기본값 0.5) point 단위의수 이전표의색깔지정자사용 이전표의색깔지정자사용 v 속성지정의예 원형 mrker 표시, mgent색실선 plot(x,y,'-mo' mo', MrkerSize',12, 'MrkerEdgeColor','g', MrkerFceColor', 'y', 'LineWidth', 2) 선두께 2 point mrker의크기 : 12 point. Mrker는녹색테두리에노란색으로채워짐 5 장 2 차원그래프 28/65
주어진데이터로부터그래프그리기 v 주어진데이터를이용하여벡터를생성하고, 이벡터들을이용하여 plot 명령어로그래프를그린다. 예 ) 어떤회사의 1988~19941994 년판매데이터를그래프로표시하기 연도 1988 1989 1990 1991 1992 1993 1994 매출액 8 12 20 22 18 24 27 5 장 2 차원그래프 29/65
주어진데이터로부터그래프그리기 >> yr=[1988:1994]; >> sles=[ =[8 12 20 22 18 24 27]; >> plot(yr, sles, '--r*' r*', 'LineWidth' idth', 2, MrkerSize', 12) 5 장 2 차원그래프 30/65
함수의그래프그리기 v plot 명령어로함수 y=f(x) 를그리기 u 함수의정의역에대한 x 값벡터를생성한다. u 원소별연산을이용하여 x 값벡터에서의 f(x) 값들을구하여벡터 y를생성한다. u 생성된두벡터로부터 plot 명령어로그래프를그린다. 예 ) 정의역 -2 x 4에대한함수 y=3.5-0.5x cos(6x) 의그래프 5 장 2 차원그래프 31/65
함수의그래프그리기 >> x=[-2:0.3:4]; >> y=3.5.^( ^(-0.5*x) *x).*cos(6*x); >> plot(x, y) 벡터 x의원소간격을미세하게생성함 >> x=[-2:0.01:4]; >> y=3.5.^( ^(-0.5*x) *x).*cos(6*x); >> plot(x, y) 5 장 2 차원그래프 32/65
한그래프에여러곡선출력하기 v 한그래프에여러곡선을표시하는세가지방법 : 1. plot 명령어속에표시할곡선데이터를나열하는방법 2. hold on, hold off 명령어를사용하는그래프를계속그리는방법 3. line 명령어를사용하는방법 v plot 명령어를이용한다중그래프출력 plot( X1, Y1, [LineSpec1] LineSpec1], X2, Y2, [LineSpec2], X3, Y3, [LineSpec3] ) (X1, Y1) 과 (X2, Y2), (X3, Y3) 등세곡선을같은그림창에나타낸다. LineSpec 을각각지정하지않는경우, MATLAB이각곡선의구분을위해곡선색깔을자동으로다르게표시한다. 예 ) plot(x, y, '-r' r', u, v, --b', '-- t, h, 'g:') (x, y) 곡선은빨간실선, (u, v) 곡선은파란파선, (t, h) 곡선은녹색점선으로한그래프에출력된다. 5 장 2 차원그래프 33/65
예제 5.1 함수와도함수의그래프그리기 v -2 x 4에대해함수 y = 3x 3-26x + 10과이함수의 1차도함수및 2차도함수그래프를같은그림창에표시하라. 풀이 ) y' =9x 2 26, y'' = 18x 5 장 2 차원그래프 34/65
예제 5.1 함수와도함수의그래프그리기 x=[-2:0.01:4]; y=3*x.^3-26*x+ *x+6; yd=9*x.^2-26; ydd = 18*x; plot( x, y, '-b', x, yd, '--r' r', x, ydd, ':k' ) 5 장 2 차원그래프 35/65
hold on/off를이용한다중그래프 v hold on/off 명령어를이용한다중그래프작성 1) plot 명령어를이용하여첫번째그래프를그린다. 2) hold on 명령어를입력한다. hold on 명령어는첫번째그래프가그려진그림창을열린채로유지하며축의속성과형식지정도그대로유지한다. 3) 이후부터 plot 명령어를추가하면현재그래프에곡선이추가된다. 4) hold off 명령어를입력하면, plot 명령어를수행할때마다이전그래프를지우고축의속성을초기화하는초기설정모드 (defult mode) 로 MATLAB 을원상회복시킨다. x=[-2:0.01:4]; y=3*x.^3-26*x+ *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차원그래프 36/65
line 명령어를이용한다중그래프 (1/2) v 이미존재하는그래프에 line 명령어를이용하여곡선을추가로더표시할수있다. line 명령어의형식은다음과같다 : line(x, Y, PropertyNme, PropertyVlue) ( 옵션 ) 선종류와색, 두께, 데이터표식의모양과크기, 표식의테두리선색및배경색등을지정하는데사용할수있는속성과값 v line 명령어는선지정자를갖지않지만, PropertyNme과 PropertyVlue를이용하여선종류와색, 데이터표식등을지정할수있다. 속성은옵션이며, 아무것도입력하지않으면기본속성및값들을이용한다. 예를들어 line(x, y, 'linestyle', '--', 'color', 'r', 'mrker', 'o') 위명령어는기존그래프에원형 mrker와빨간파선의곡선을추가한다. v plot 명령어는실행될때마다새로운그래프를시작하는반면, line 명령어는기존그래프에선들을추가한다. 여러곡선을한그래프에그리려면, plot 명령어를먼저실행하고 line 명령어로곡선을추가한다. 5 장 2 차원그래프 37/65
line 명령어를이용한다중그래프 (2/2) v line 명령어를 plot 명령어보다먼저입력하면에러메시지가출력된다. x=[-2:0.01:4]; y=3*x.^3-26*x+ *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 차원그래프 38/65
그래프의형식지정 v plot 명령어와 fplot 명령어는기본형태로그래프를출력한다. 따라서그래프가특정한모양을갖도록하거나추가정보표시를위해서는그래프형식지정이필요하다. 격자 (grid) 표시하기, 축범위재설정하기 축라벨과그래프제목, 범례 (legend), 텍스트라벨등추가하기 v 그래프형식지정방법 plot 또는 fplot 명령어실행후, MATLAB 형식지정명령어를사용하는방법. 이방법은 plot 명령어가스크립트파일에포함되어있을때유용하며, 프로그램 이실행될때마다지정한형식이적용된그래프가그려진다. 그림창의그래프편집기 (Plot Editor) 를이용하여대화식으로지정하는방법. 그래프가생성된후그래프편집기로해당그래프에대해형식지정을하므로, 해당그래프에대해서만지정한형식이유효하며, 그래프가새로생성되면형식지정을다시해야한다. 5 장 2 차원그래프 39/65
MATLAB 형식지정명령어 명령 gtext( 텍스트 ) text(x,y, 텍스트 ) title( 텍스트 ) xlbel( 텍스트 ) ylbel( 텍스트 ) xis grid [on/off] hold [on/off] [x,y]=ginput(n) legend( s1, s2,, pos) 설명 마우스로 텍스트 를그래프내의원하는위치에놓는다. (x,y) 위치에 텍스트 의첫글자가위치하도록표시한다. 그래프윗부분에 텍스트 를제목으로표시한다. 그래프의가로축에 텍스트 를축라벨로표시한다. 그래프의세로축에 텍스트 를라벨로표시한다. xis( [xmin xmx ymin ymx] ) : 좌표축범위지정 xis [tight/norml/equl] : 좌표축 scling 및모양조정 그래프바탕에격자 (grid) 를표시하거나지운다. 현재그래프와좌표계특성을유지한채, 새로운그래프를추가하거나, 기본설정으로새로운그래프를생성. 마우스로그래프에서점을선택하여그점의 (x, y) 좌표를읽어벡터 x, y에저장한다. n은읽을점의개수이다. 선종류와입력한문자열을지정한위치 (pos) 에표시한다. 5 장 2 차원그래프 40/65
그래프형식지정명령어 text(x, y, 텍스트 ) gtext( 텍스트 ) 그래프안에텍스트를표시한다. text 명령어는그래프의좌표로 (x, y) 위치에, gtext는마우스를클릭한위치에텍스트첫글자의왼쪽하단모서리가놓이도록한다. title( 텍스트 ) 그래프제목을그림상단에표시한다. xlbel( 텍스트 ) ylbel( 텍스트 ) x, y 좌표축부근에축라벨을붙인다. title pos=0 pos=1 legend( text1, text2,, pos) 곡선의출력순서대로 text를입력하면곡선종류와입력한텍스트를범례로그래프에표시한다. 표시위치는 pos에의해결정된다. pos=-1 : 우측경계선밖 pos=1~4 : 우측상단부터우측하단까지시계반대방향순서로그래프안쪽 pos=0 : 우측상단에그래프와안겹치게 pos=2 pos=3 legend xlbel pos=4 5 장 2 차원그래프 41/65
title, text, xlbel 에서의텍스트형식지정 v xlbel, ylbel, title, text, legend 명령어에포함된텍스트문자열의글자폰트와크기, 위치 ( 위첨자, 아래첨자 ), 모양 ( 이탤릭, 볼드등 ), 글자색등을지정하여화면에표시할수있다. 더자세한내용은도움말창의 Text 와 Text Properties 항목을참조한다. v 문자열의형식은문자열안에수정자 (modifier) 를추가하거나명령어옵션인 PropertyNme과 PropertyVlue 인자들을문자열다음에추가하여조정할수있다. v 수정자 (modifier) \bf \it \rm Modifier \fontnme{ 폰트이름 } \fontsize{ 폰트크기 } \color{ 색깔이름 } 볼드체 효과 이탤릭체 로만 ( 보통 ) 체 폰트지정 폰트크기지정 폰트색깔지정 수정자는해당문자열의삽입한위치이후의문자에대해서만효력을미친다. 문자열중일부텍스트만수정하려는경우, 수정할텍스트를수정자뒤에중괄호 { } 안에삽입하면된다. 폰트색깔이름 : blue, mgent, 5 장 2 차원그래프 42/65
문자열내에서의텍스트형식지정 v 위첨자와아래첨자 u _( 밑줄글자 ) 나 ^ 뒤의낱개글자를아래첨자나위첨자로출력시킨다. u _ 나 ^ 다음에여러개의연속된글자들을중괄호 { } 속에표시하면여러개의글자를아래첨자나위첨자로표시할수있다. v 그리스문자 u 문자열안의 \ 그리스문자이름 은실행시그리스문자로변환되어출력된다. u 그리스문자이름을전부영어소문자로표기하면그리스문자가대문자, 소문자로표기하면그리스문자가대문자로출력된다. 문자열에서의표기 \lph 그리스문자 문자열에서의표기 \Phi 그리스문자 F \bet \gmm b g \delt \Gmm D G \thet \pi q p \Lmbd \Omeg L W \sigm s \Sigm S 5 장 2 차원그래프 43/65
문자열내에서의텍스트형식지정 '\fontnme{ 휴먼옛체 }\fontsize{ fontsize{18}\color{red} color{red}1 자유도감쇠진동 ' '\fontnme{times New Romn} \fontsize{15}x(\itt\rm)=3.5^{ ^{-0.5\itt} t} \rmcos( cos(2\pi\itt\rm)' 5 장 2 차원그래프 44/65
속성인자를이용한텍스트형식지정 v xlbel, ylbel, title, text 명령어안에서문자열뒤에옵션인 PropertyNme 과 PropertyVlue 인자를추가하여출력되는텍스트의형식을지정할수도있다. 예 ) text( x, y, 텍스트문자열, XPropertyNme, PropertyVlue ) v PropertyNme 은문자열로입력되며, PropertyVlue 는속성값종류에따라수또는문자열로입력한다. v PropertyNme 과가능한 PropertyVlue 에대한일부예를다음슬라이드에표시하였으며, 나머지는도움말을참조한다. 5 장 2 차원그래프 45/65
속성인자의예 v PropertyNme 과 PropertyVlue 인자의예 속성명 Rottion FontAngle FontNme FontSize FontWeight Color BckgroundColor EdgeColor LineWidth 설명 텍스트의방위 (orienttion) 를지정함 글자를이탤릭체로할지를지정함 텍스트의폰트를지정함 폰트의크기를지정함 글자의굵기를지정함 텍스트의색을지정 배경색을지정함 ( 직사각형영역 ) 텍스트를둘러싼직사각형글상자의테두리색을지정함 텍스트를둘러싼직사각형글상자의테두리선의두께를지정함 가능한속성값 스칼라 ( ), 초기설정값 = 0 norml (defult) defult), itlic 시스템에서제공하는폰트명 스칼라 ( 단위 : point) 초기설정값 =10 light, norml(defult) (defult), bold 색지정자 (5.1절참조 ) 색지정자 (5.1절참조 ) 색지정자 (5.1절참조 ) 초기설정값 : 없음 스칼라 ( 단위 : point) 초기설정값 : 0.5 5 장 2 차원그래프 46/65
xis 명령어와 grid 명령어 (1/2) v xis 명령어는좌표축의범위와모양을변경할때사용된다. v MATLAB은벡터 x와 y의원소들중에서최소값과최대값에근거한경계값에따라자동으로좌표축을설정하므로, 때로는좌표축을재조종할필 100 요가있을수있다. 예 ) 90 80 70 % 그래프그리기 x = 0: 0.02: pi/2; plot(x, tn(x), '-ro') xis([0 pi/2 0 5]) % 최대값에맞추어설정된좌표축의재설정 xis([0 pi/2 0 5]) 60 50 40 30 20 10 0 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 5 4.5 4 3.5 3 2.5 0 0 0.5 1 1.5 5 장 2 차원그래프 47/65 2 1.5 1 0.5
xis 명령어와 grid 명령어 (2/2) v xis 명령어의가능한몇가지형태 xis([xmin, xmx, ymin, ymx]) xis tight xis equl xis norml 좌표축범위를 xmin~xmx, ymin~ymx로지정 좌표축범위를데이터범위에맞춤 데이터단위가모든방향으로같도록 spect rtio를맞춘다. 기본모우드로설정한다. v grid 명령어 grid on grid off 그래프에격자선 (grid) 을추가함그래프에서격자선 (grid) 을제거함 5 장 2 차원그래프 48/65
그래프형식지정예 5 장 2 차원그래프 49/65
단위원그리기 v 반지름이 1인단위원그리기 % 데이터생성 ( x=cos q, y=sin q, 0 q 2p ) thet = linspce(0, 4*pi, 100); x=cos(thet); y=sin(thet); % 원과격자선그리기 plot(x, y) grid on % 좌표축조정 xis equl 5 장 2 차원그래프 50/65
그래프편집기를이용한형식지정 v 그림창에서그래프편집기를이용하여대화식으로그래프를편집할수있다. v Figure Toolbr의화살표 (Edit Plot) 를클릭하면편집모드가되며, 편집대상주위에검은점들이표시된다. 편집할개체를선택하여더블클릭하면, 해당개체의속성을변경할수있는 Property Editor 창이그림창밑에나타난다. 라벨, 범례등은마우스로드래깅하여위치를바꿀수있다. Figure Toolbr 5 장 2 차원그래프 51/65
속성편집창 (Property Editor) v Property Editor 창에서해당그래프요소의속성을편집할수있다. Figure Toolbr 우측끝의 Show Edit Tools 버튼을눌러도속성편집창이나타난다. Show Edit Tools 5 장 2 차원그래프 52/65
같은페이지에여러그래프그리기 (1/2) v subplot 명령어를이용하여동일한페이지에여러개의그래프를그릴수있다. v Subplot 명령어의형식그림창을 m n의작은사각형그래프영역으로나누고, 각그래프영역에대해첫줄부터마지 subplot( plot(m, n, p) 막줄까지왼쪽에서오른쪽순서대로차례로일련번호를부여한후, 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 차원그래프 53/65
같은페이지에여러그래프그리기 (2/2) v subplot 명령어사용예 5 장 2 차원그래프 54/65
5장강의록끝 5 장 2 차원그래프 55/65