matlab 소개part 2mldm.tistory.com/attachment/499b87f37353d9g.pdf · 2015-01-21 · database &...
TRANSCRIPT
Matlab 소개 part 2
1
http://idb.korea.ac.krDataBase & Mining LAB.
Korea University
본 발표 자료는 mastering MATLAB 7, MATLAB An Introduction With Application, 임종수의 MATLAB7,
Digital Image Processing using MATLAB 을 참조하였습니다.
목 차
v M-file§ 함수
§ 스크립트
v 제어
v 변수
v 데이터 타입v 데이터 타입
v Plot
v variable save/load
v File Open/Close, 데이터를 쓰고, 읽는 fprintf, fscanf
v Graphics with MatLab
v 본 강의 자료는 MATLAB을 사용하기 위한 가장 기본적인 내용만 다루고 있습니다. 따라서 관련 교재들을 반드시 참조하시기 바랍니다.
2
M-file Programming 1
v M-file : Matlab언어로 쓰여진 파일들(files)
v 연속적인 Matlab문장들(명령어들)을 수행하는 script mode§ 파일 이름은 어떠한 이름으로도 사용 가능
v 입력 매개변수와 출력 매개변수를 다루는 function mode§ 파일의 이름은 function이름과 가능한 같게 한다
3
v text editor를 이용하여 M-file 작성
v command window에서 M-file을 부르거나, 다른 M-file내에서 호출
v 비교§ function : 변수가 function workspace에 등록됨.
§ script : 변수가 base workspace(command workspace)에 등록됨. (전역변수)
§ 6,7 페이지에 있는 function과 script를 실행할 때 workspace 변화 확인
함수 작성 유의사항
v 파일 첫줄에 ‘function’이라는 단어가 있는 M-파일이 함수 파일
function 변수 = 파일이름(인자)
function [Pccoeff, Pcvec] = pca(data, N)
v 스크립트와의 큰 차이점은 ‘function’이 없으면 스크립트로 인식
v 파일이름의 이름으로 사용된 이름이 함수의 이름과 같아야 함
‘%’기호 뒤에 나오는 문장들은 주석으로 인식되어 무시v ‘%’기호 뒤에 나오는 문장들은 주석으로 인식되어 무시
v ‘%’기호와 함께 적어 놓은 설명 부분은 MATLAB프롬프트에서‘help mean’이라고 입력하였을 때 화면상에 표시
v 첫 번째로 ‘%’ 기호이후의 주석은 ‘ lookfor mean’이라고 입력하면 화면에 ‘mean’이라는 단어를 포함하는 항목을 모두 표시
4
function 작성
v Matlab – Command Window에서 fact(2)를 해보자§ 다음과 같은 메시지가 나온다 ??? Undefined command/function 'fact'.
v 작성한 후 디스크 모양의 Save를
클릭하면 저장 화면이 뜨고,
저장할 이름에 fact라고 되어 있다.
5
v prod.m함수는 입력 매개변수로 주어진
벡터를 구성하는 각각의 원소에 대한
곱을 반환하는 함수(matlab에서 지원)
text editor 실행
기본 함수 설명
v disp.m : 주어진 ‘메시지’ 문자열을 화면에 출력.§ disp(‘메시지’)
v rem.m : 주어진 배열 a,b에 대해 a./b를 계산하여 나머지들을 반환한다.§ Y = rem(a, b)
v fix.m : 주어진 배열 X의 원소들의 소수부분을 제거하고 정수로만 이루어진 배열을 만든다진 배열을 만든다§ Y = fix(X)
7
Flow Control : while
v n!의 결과가 100을 넘어가기 전의 “n!’의 “n”을 구하시오
while 논리적인 조건
< 실행문 >end
10
.
.
% disp 대신 sprintf로 변경한 결과
Flow Control
v break, continue, return 은 개인적으로 확인하시기 바랍니다.
v try, catch : 예외 처리 기능§ try 다음에 나오는 명령문중에서 error가 발생하면 실행을 중단하고 , catch뒤
에 나오는 명령문을 실행한다. catch에서도 error가 발생하면 제어권을 matlab command window로 돌려준다.
§ 일종의 변형된 if/else문이다§ 일종의 변형된 if/else문이다
11
try< 명령문 1 >< 명령문 2 >…
catch< 명령문 3 >…
end
지역/전역 변수
v Local variables§ 각각의 matlab function은 자신만의 local variables를 가지고 있다.
§ 단 nested function(다른 함수안에 명시적으로 encapulated 한 함수) 제외
§ script의 경우는 독립적인 variable이 아닌 호출한 곳의 workspace에 데이터를저장. 따라서 command window에서 호출되면 base workspace에 저장. 함수에서 호출되면 해당 함수 workspace에 저장
v Global variables§ 서로 다른 workspace간 데이터를 교환하고 싶은 경우에는 입/출력 매개변수
를 이용하거나 전역 변수를 이용
§ global 로 선언한다. ex) global n
v 추가사항§ 2차원 배열을 참조할 때, A(2,3) 원소를 인덱스로 표현하면 A(8)이다.
§ why?! matlab은 열 우선으로 저장한다.
12
Data Types : 다차원 배열
v 2, 3, 4차원 배열 등의 다차원 배열 사용 가능
v 3차원 배열 예
v 다차원 배열을 만드는 함수들§ ones.m, zeros.m, rand.m, randn.m, cat.m, reshpae.m, repmat.m 등
13
Data Types : Cell
v 다른 타입의 데이터를 같이 사용하는 배열§ [ ] 가 아닌 { } 를 사용한다
15
v Cellplot.m 을 통해 해당 cell 데이터 타입의 구성을 확인한다
Data Types : Struct 1
v 다음과 같은 구조를 갖는 record들로 구성되는 data field 가 있다
학생(record 이름)
성명 : 이 종욱
학번 : 2007001
학점 : [ 4.3 4.0 4.3 4.5 ]
v cell 방법 사용
16
v cell 방법 사용
Data Types : Struct 2
v C언어에서 배운 struct와 같은 방식으로 field를 지정하여 record 저장할수 있다.
% 각각의 field는 C언어와 같이 .(dot)으로 구분
% field name을 이용하여 struct type students의 field에 접근
17
Plot 1
v Line Plots : plot.m, ploty.m, loglog.m etc
v Bar Plots : bar.m, barh.m etc
v Scatter Plots
v Pie Charts
Contour Plots 와 Meshv Contour Plots 와 Mesh
v plot3와 surf
18
Plot 2
% 그래프가 그려진 후 다음 명령을 실행해보자.
% 어떤 변화가 발생하는가?
>> xlabel('test plot x')
19
>> xlabel('test plot x')
>> ylabel('test plot y');
>> title('plot 연습')
v 선 지정 : 빨간 쇄선, 별마크
Plot 3
v Grid : 그래프의 눈금 표시에서의 격자를 설정․해제한다.
v Box : 축 상자를 설정․해제한다.
v 제목과 축의 라벨들은 title, xlabel, ylabel을 사용하여 첨가
v text(x,y,S) : 좌표 (x,y)에 문자열 S를 첨가한다.
v Gtext : 마우스를 사용하여 대화식으로 텍스트를 첨가
v axis([xmin xmax ymin ymax])는 현재의 그래프의 비율을 주어진 값으로v axis([xmin xmax ymin ymax])는 현재의 그래프의 비율을 주어진 값으로설정
v hold on : 현재의 그래프에 그래프를 더 추가 (cf. hold off)
v figure : 다중 그림창을 생성. figure(n)은 n번째의 그림창을 활성화함.
v 하나의 figure는 subplot 명령을 사용하여 나뉘어 질 수 있음.
v zoom on으로 설정해 두면, 마우스로 그림창을 확대할 수 있음.
20
fplot
v fplot 명령은 y = f(x) 형태인 함수 값을 지정된 한계 사이에서 그래프를정확하게 그려주는 명령
v y = x^2 + 4*sine(2x) -1 그래프 그리기
fplot(‘function’, limits, line specifiers)
22
variable save
v 첫번째 : MATLAB 프로그램 상단 File/Save§ 확장자 mat
§ mat은 binary로 저장된다
v 두번째 : Command Window 에서 저장§ 현재 사용된 모든 variable 저장
§ 필요한 variable 저장
23
v tip1 : workspace에 있는 변수들을 모두 삭제할 때 clear all
v tip2 : 변수들 정보 확인할 때 whos
variable load 1
v 첫번째 : MATLAB 프로그램 상단 File/Open 을 이용하여 해당 파일 load
v 두번째 : Command Window에서§ 모든 variable 가져오기
v exe_01.mat 파일을 읽으면,
§ 일부분 variable 가져오기
24
v exe_01.mat 파일을 읽으면,
Workspace에 해당 variable이
등록된다.
File open
v mat파일 뿐 아니라 txt, dat 파일을 사용하는 방법
v fid = fopen('dat.dat','r');
§ r : 자료를 읽음, default mode
§ w: 자료를 쓸 수만 있음, w+: 자료를 읽고 쓸 수 있다.
§ a : 자료를 추가할 수 있음
§ r+ : 자료를 읽고 쓸 수 있음
26
>> fid = fopen('aaa.txt', 'r')
fid =
-1
해당 파일이 Path 안에 없으므로 fid 값을 -1
- 실패 할 경우 fid값 -1
- 1인 경우에는 screen에 표시하라는 뜻
- 2인 경우에는 표준 error
fid = fopen(파일 이름, 모드(mode))
- 주어진 파일(확장자 포함)을 open하는데 성공하면, 파일 식별자(file identifier) fid에
3이상의 양의 정수를 반환하고, 실패할 경우에는 -1을 돌려준다
- fid는 file handle이다
File close
v 열려있는 파일을 닫아주는 함수 fclose.m
st = fclose(fid)
- fopen.m함수에 의해 반환된 파일 식별자 fid를 이용하여 열려있는 파일을 닫아준다
- 파일을 닫아주는데 성공하면, “0”을 반환하고, 실패하면 “-1”을 반환
st = fclose(‘all’)
27
st = fclose(‘all’)
- 열려 있는 모든 파일을 닫아준다
v 관련 책들을 보면서 추가 사항들을 확인하시기 바랍니다.
데이터를 쓰는 fprintf.m
v 파일을 열고난 후, 그 파일에 데이터를 쓰는 fprintf.m
count = fprintf( fid, format, A, … )
- 행렬 A에서 실수 부(real part)를 주어진 format에 맞추어 열려 있는 파일(fid)에
쓰기(write)를 행한다.
- fprintf함수를 이용해 쓰여진 bytes수가 리턴된다. 그 값이 count변수 저장됨
v format 예
28
fprintf( fid, format, A, … )
- screen(standard output)에 행렬 A를 표시한다
%-12.5e% 사용하려는 format 시작 알림
- 주어진 필드에서 왼쪽(flag) 정렬
12.5 정수부는 12자리 이내, 소수는 5자리
e 지수 형태로 표시, d 10진수 표시
데이터를 읽는 fscanf
v 파일을 열고 난 후, 해당 파일에 있는 데이터를 읽어 들이는 함수
[ A, count ] = fscanf( fid, format, size )
- fopen.m함수에 의해 열려있는 파일(fid)을 주어진 format에 맞게 size에 서술된
크기로 읽어 들인다.
- count는 읽어 들인 데이터의 수를 의미
29
A = fscanf( fid, format )
- format에 의거하여 데이터를 읽어 들인 뒤에 열 벡터의 형태로 반환한다.
size 추가
- n : n개의 데이터를 열 벡터의 형태로 읽어 들인다
- inf : 주어진 파일의 끝까지 읽어 들인다.
- [m, n] : m x n 의 크기를 갖는 행렬의 형태로 읽어들인다. n은 inf가 될수 있으나
m은 될수 없다. exe) [2, inf] : 2 x 열의 값이 있을때까지
File open/close 예제
v exp.txt 파일을 만들고(열고),
그 안에 해당 연산값을 저장한다
v exp.txt에 저장된 값을 읽고(read)
그 값을 변수 a에 저장한다
30
Graphics with MatLab 1
v 디지털 영상표현§ 영상은 2차원 함수 f(x,y)로 정의
§ 공간좌표 평면 (x,y)
§ 샘플링(표본화), 양자화 후 좌표화
f(0,0) f(0,1) ….. f(0,n)
31
f(1,0) f(1,1) ….. f(1,n)f(x,y) = f(2,0) f(2,1) ….. f(2,n)
.…..….. f(m,1) f(m,2) ….. f(m,n)
Graphics with MatLab 2
v 영상 읽기§ imread(‘경로\파일명’)
§ 예
Ø f = imread('C:\Program Files\MATLAB71\work\kus105.jpg');
§ whos f
2005.9.21.Wed Sky 101 Team master
32
Ø사이즈 크기 등 배열에 관한 추가정보 표시
Graphics with MatLab 3
v 영상 표시§ imshow(f ,g)
Ø f 는 영상배열
Ø g 는 밝기 레벨 수
Ø g 입력 안 할 경우 기본값 256레벨으로 설정
33
§ 예
Ø imshow(f)