지난시간에배운것 강의 3. MATLAB 기초 - 두번째 DoeHoon Lee, Ph.D dohoon@pnu.edu Visual Computing & Biomedical Computing Lab(VisBiC) School of Computer Science & Engineering Pusan National University http://visbic.cse.pusan.ac.kr/ 배열 : array MATLAB 프로그램의기본적인단위 분류 Vector : 1 차원배열 Matrices : 2차원이상의배열 크기 : 행과열의수로표현 배열 : 행과열의순서로표기변수 변수는반드시문자로시작 문자, 숫자, 그리고 _(underscore) 문자의조합 최대 63 자까지인식 3가지초기화방법 수식으로주어진변수에값을지정하는방법 키보드로부터값을입력하는방법 파일로부터값을읽는방법할당문을이용한초기화 양식 Var = 수식 2 지난시간에배운것 지난시간에배운것 Shortcut t notation: ti colon operator( : ) Firt: step: last Shortcut notation: transpose operator( ) F = [1:4] 고유함수 :function zeros, size, ones, eye, length Page 30, table 2.1 참조 a = zeros(2) b = zeros(2,3) c = [1 2; 3 4]; d = zeros(size(c)); Function : input - 명령창에서입력기다림 my_val = input( Enter an input value: ); 문자열입력때는양식을정한다. Ex) [ex_run] in = input( Enter an input value:, s ); 3 차원배열 Ex) [ex_run] Notice c(:,:,1)=[1 2 3;4 5 6]; c(:,:,2)=[7 8 9;10 11 12]; whos c 메모리상의할당순서 : column major order (fig. 2.3) 3 4
지난시간에배운것 : 부분배열 (subarray) 지난시간에배운것 : 특별값 배열의일부분을쉽게조작 Ex) [ex_run] arr1 = [1.1-2.2 3.3-4.4 5.5]; arr(3) arr1([1 4]) arr1(1:2:5) arr2=[1 2 3; -2-3 -4; 3 4 5]; arr2(1,:) arr2(:,1:2:3) End 함수 : 첨자로사용되면가장큰값을의미 Ex) arr1(2:end) Tbl Table 2.2 22 참조 Pi, ij i,j Inf : division by 0 NaN : Not a Number clock : 6-element date eps : epsilon ans 5 6 이전시간의복습실습문제 이번시간에배울내용 Quiz 2.1 21 자료의출력 자료를저장하는방법 Quiz 2.2 자료를불러오는방법 연산자 Plotting( 그래프그리기 ) 7 8
자료출력 자료출력 출력하는서식들 : Tbl Table 2.3(p.41) 23( format short - 소수점이하 4 자리 : 12.3456 format long 소수점이하 15 자리 : 12.345678901234567 format short e 5 자리수에지수표시 : 1.2346e+001 format short g 5 자리수 ( 경우에따라지수표시 ):12.346 format long e 15 자리수에지수표시 : 1.2345678901234567e+001 format long g 15 자리수 : 12.34567890123456 format bank format hex 예제 : 값을 12.3456789012345678 로주고실행해보자 format rat 작은정수의근사비 : format compacta 화면에출력하기 disp( string ) : 문자열출력하기숫자를문자나문자열로변환하여출력부가적인함수 num2str : 수자를문자열로바꾸기 int2str : 정수를문자열로바꾸기예 [ex_run] disp(pi) str=[ The value of pi = num2str(pi)] disp(str) fprintf : 서식화된출력 : fprintf(format, data) Data값을제어가능 Format : 자료표시방식을나타내는문자열, 특수기능포함 Data : scalar or array format loose format + 9 10 자료출력 load &save Fprintf 에서사용하는특수문자 %d : 값을정수로표현 %e : 지수표현 %f : floating point 서식 %g : 부동소수점 or 지수서식중짧은서식으로표현 \n : new line Ex) 비교해보자 [ex_run] fprintf('the value of pi is %f\n', pi) fprintf('the value of pi is %6.2f\n', pi) 제약점 복소수값에서실수부만출력, fprintf는허수부를무시한다. Ex) 복수수값의표현비교 [ex_run] x=2*(1-2*i)^3 str=['disp : x= ' num2str(x)] disp(str) fprintf('fprintf:x= %8.4f\n', x) 파일의입출력중에 load 와 save 명령어만 Save 명령어 양식 : save <filename> <var1> <var2> MAT-file(.mat) : default 파일형식 다른프로그램과공유 : ascii code로저장 save <filename> <var> -ascii Ex) save x.dat x ascii Load 명령어 양식 : load <filename> 주어진파일이 mat양식이면 -mat 옵션 Ex) load mat x.dat load x.dat Ex] [ex_run] 11 12
Scalar & array 연산 Dot operation(. Operation) 할당연산자 (assignment operator) 변수 = 수식 스칼라사이의산술연산 연산 대수식 MATLAB식 덧셈 a+b a+b 뺄셈 a-b a-b 곱셈 a x b a * b 나눗셈 a/b a/b 거듭제곱 a b a^b Array(not matrix) multiplication li :.* a.* b Array right division :./ a./ b Array left division :.\ a.\ b Array exponentiation :.^ a.^ b 배열 / 행렬연산 (array/matrix operation) 원소별순서적연산 (element-by-element basis) 13 14 Operation precedence MATLAB 의내장함수 1. 괄호 2. 왼쪽 -> 오른쪽의모든거듭제곱 3. 왼쪽-> 오른쪽의모든곱셈 / 나눗셈 4. 왼쪽 -> 오른쪽의모든덧셈 / 뺄셈 미리제공되는기능 : 함수 Table 2.8 (p. 55) 주요함수들 abs(x) exp(x) : e^x log (x) : 자연로그 [value, index]=min/max(x) mod(x,y) : x 를 y 로나눌때의나머지 ceil(x) : 올림 (+ 무한대 ) fix(x) : 0 의방향으로가장가까운정수로반올림 floor(x): 내림 (- 무한대 ) round(x) : x 에가장가까운정수로반올림 double(x) : 문자열을수치배열로변환 15 16
Plotting( 도표그리기 ) Plotting ( 도표그리기 ) Plot(x,y) : x 축에대해서 y 좌표에표시함 Ex) [ex_run] 부가기능 title( 제목 ) xlabel( 축제목 ) ylabel( 축제목 ) Grid on/off : 격자표시 / 표시없애기 프린트기능 : 그래픽파일로 (option : table2.9, p. 58) 그림판에서직접해도가능 Ex) print dtiff my_image.tif 여러그래프를하나로 [ex_run] x=0:pi/100:2*pi; y1=sin(2*x); y2=2*cos(2*x); plot(x,y1,x,y2); hold on/off 범례 (legend) Color / marker style / line style color Mark style Line style y Yellow. Point - Solid m Magenta o Circle : Dotted c cyan x X-mark -. Dash-dot r Red + Plus -- Dashed g Green * Star <none> No line b Blue s Square w White d Diamond k black v Triangle(down) ^ Triangle(up) < Triangle(left) > Triangle(right) p Pentagram h Hexagram <none> No marker 17 18 Plotting- 도표그리기 도표그리기 legend( string1, string2,, pos) pos 의위치 : Table 2.11(p. 61) 가능한위치 ( 붉은색 ) NW NL NC NR NE TW TL TC TR TE MW ML MC MR ME BW BL BC BR BE E) Ex) [ex_run] x = 0:pi/100:2*pi; x=0:pi/100:2*pi; y1=sin(2*x); y2=2*cos(2*x); plot(x,y1, 'k--', x, y2, 'b--'); title('plot of f(x)=sin(2x) and its derivative'); xlabel('x'); l(' ') ylabel('y'); l(' ') legend('f(x)', 'd/dx f(x)', 'tl'); grid on; SW SL SC SR SE 19 20
logarithm scale 종합예제 plot : x, y 선형눈금 semilogx : x 축로그눈금, y 축선형눈금 semilogy : x 축선형눈금,y 축로그눈금 loglog : x, y 축모두로그눈금 Temperature Conversion Fahrenheit( o F) -> Kelvins(K) T(in kelvins)=[5/9 T( o F) 30.2] + 273.15 순서 1. 입력온도읽는다 2. 식에의해온도계산 3. 결과출력 21 22 종합예제 알프스를넘는나폴레옹 Carbon 14 Dating 방사성동위원소 : 시간경과에따른자연붕괴. 지수적으로감소 시간 t=0, 초기량 Q 0 임의시간 t 에서의원소의양 Q(t) = Q e λt ------- ( 식 *) λ: 방사성붕괴상수 방사성동위원소의붕괴속도 : 알려져있음 방사성물질의초기량를알고, 일정시간후에남아있는양Q를알고있다면이전식 에의해t를구할수있다. t decay = - 1/ λ log e Q/Q 0 ------ 식 (**) carbon-14의붕괴상수 : 0.00012097 / 년 과정 1. 탄소14의남아있는백분율입력 2. 백분율을분수값으로변환 (Q/Q 0 ) 3. 식 (**) 이용시료의연령계산 4. 결과출력 다비드 ( 자크루이다비드, 1748-1825) 신고전주의, 프랑스화가 1800-1801년에그림 나폴레옹보나파르트 (Napoleon Bonaparte) 알프스생베르나고개 23 24
Assignment 1 21 2.1 2.4 2.8 2.10 2.11 2.14 2.18 과제마감은특별한언급이없으면일주일안에제출하여야한다. 마감일 : 9 월 17 일 제출장소 : 시각및의생명컴퓨팅연구실 (VisBiC) C26-425 25