Transcript 2일차

2주차
목표
Matlab에서 사용하는 변수 타입들을 자유자재로 사용할
수 있다.
GUI 함수들을 이용하여 그래프를 그릴 수 있다.
변수 선언

변수명(variable) = 수식(expression)
Array
logical
char
Int8, unit8 ~
Int64, unit64


numeric
double
cell
struct
User
classes
일반적으로 한 변수가 가질 수 있는 최대값은
1.7977e+308 최소값은 2.2251e-308이다.
문자열의 경우엔 싱글쿼터(‘)로 묶어준다.
Function
handle
행렬을 만드는 방법
ones(x,y) : 모든 원소의 값이 1인 x*y 크기의 행렬을
만든다.
 zeros(x,y) : 모든 원소의 값이 0인 x*y 크기의 행렬
을 만든다.
 magic(x) : x*x 크기의 마방진을 만들어준다.
 Eye(x) : x*x 크기의 단위행렬을 만들어준다.
 Rand(x,y) : x*y 크기의 임의의 원소의 값을 같은 행
렬을 만든다.
 Pascal(x) : 파스칼 삼각형을 그려준다.
 A=‘문자열’; : 문자열도 행렬로 저장

행렬은 반드시 한가지의 타입으로 구성된다.
MATLIX
B=Kron(X,A) : [X(1,1)*A X(1,2)*A ...]
 B=repmat(A,[m,n,p,..])
임의의 차원을 가진 행렬 A로 구성된 행렬 B를 생성한
다.
 B=cat(dim, A1, A2, A3,…)
행렬 A1, A2, A3, …를 dimension에 맞춰서
새로운 배열 B을 만든다.
 B=reshape(A, m, n, p,…)
행렬 A를 m*n*p*…인 새로운 행렬 B로 재배치한다.

KRON, REPMAT
RESHAPE, CAT
유용한 코딩방법
연산된 데이터를 한 변수에 저장할 때 쓰는 방법
MATLIX
3차원 배열
변수명(row,column,dimension)

Dimension 3
Dimension 2
Dimension 1
MATLIX
CELL

중괄호({,})와 첨자를 이용하여 만드는 방법
A=cell(1,2) ; % 1*2 크기를 갖는 cell array를 만든다.
A{1,1}=1:10; / A{1,2}=‘number’ % Content indexing
A(1,1)={1:10}; / A(1,2)={‘number’}; % Cell indexing

CELL PLOT
cellplot.m
Cell array가 주어질 경우 cellplot함수는 각각의 cell
들의 구조를 보여준다.
H=cellplot(cell)에서 H는 surface object, line object
그리고 text object에 대한 handle을 돌려준다.
H=cellplot(cell,’legend’)는 각 cell에 저장된 데이터 타
입에 대한 color legend를 제공한다.


Celldisp(cell) : cell에 저장된 데이터를 모두 출력한
다.
CELL 예제
2*2크기의 cell을 만들고 cellplot을 이용하여 출력해
보자
예제
예제

나이와 이름을 cell에 저장을 하고 findstr(or
strfind)이란 함수를 이용하여 이름을 넣어 그 사람
의 나이를 반환해주는 함수를 만들어보자.
STRUCT TYPE
Record name.Field name = Data
 Struct(‘field1’,value1,’filed2’,value2,…)
- Value의 타입은 하나로 통일된다.

학생(record 이름)
성 명 : 홍길동
학 번 : 12345678
학 과 : 수학과
Students array
Students(1)
.name ㅡ ‘홍길동’
.number ㅡ 12345678
.class ㅡ ‘수학과’
Students(2)
.name ㅡ ‘O철수’
.number ㅡ 12125269
.class ㅡ ‘컴퓨터공학과’
Students(3)
.name ㅡ ‘O영희’
.number ㅡ 12113453
.class ㅡ ‘정보통신공학
과’
예제
예제
다음 주어진 3명의 키에 대한 평균값을 구하고 시력
이 가장 좋은 사람을 출력해주는 함수를 작성해보자.
* Length함수 , max 함수

Man(1)
.name – ‘김OO’
.height – ‘183’
.sight – [0.5 0.7]
Man(2)
.name – ‘이OO’
.height – ‘165’
.sight – [1.5 1.8]
Man(3)
.name – ‘박OO’
.height – ‘172’
.sight – [0.9 1.2]
FUNCTION HANDLE
Function mode M-file에서 생성한 함수에 matlab이
임의의 값을 준다.
 간접적으로 해당 함수를 호출하는 수단.
 다른 함수의 입력 매개변수로 전달될 수도 있고 임의
의 구조체에 저장할 수도 있다.

기명 기법


Function handle을 생성하고자 원하는 함수의 이름
이 존재하며, 이 함수의 이름 앞에 경로없이 @을 붙
여주면 된다.
FuncHnd=@function_name
익명 기법

Function handle을 생성하고자 원하는 함수의 이름
이 존재하지 않는 경우에 익명 기법을 이용한다.
FuncHnd=@(입력 매개변수 List) 수식
-> [출력 매개변수 List]=FuncHnd(입력 매개변수)


1.
2.

익명 기법에서는 다음과 같은 2가지 타입의 변수들
을 사용한다.
입력 매개변수 list에 지정한 변수들
익명 함수의 body안에서 지정한 변수들
이들 변수들이 값을 할당 받으면, 해당 익명 함수가
메모리에서 unloading 될 때까지 유지한다.
실전 예제

1 2 2𝑥
𝑥 𝑒 𝑑𝑥의
0
정적분을 구하여라
NESTED FUNCTION

Matlab function 내부에 하나 도는 그 이상의 함수
를 정의할 수 있다. 이들 내부에 정의된 함수를
nested function이라고 한다.
GUI 란?
명사
<컴퓨터> 사용자가 쉽고 편리하게 사용할 수 있도
록 입출력 따위의 기능을 알기 쉬운 아이콘 따위의 그
래픽으로 나타낸 것.

정식명칭 : Graphic User Interface
GUI 프로그래밍

>>guide
HANDLE GRAPHICS SYSTEM
Root Object : Computer Monitor
 Figure Object : 임의의 그래프를 만들려면, 해당 그
래프가 위치할 window가 필요한데 그 window를
Figure Window라고 부른다.
 Axes Object : 그래프가 위치할 기준이 되는 좌표축
이 있어야 한다.
 Text Object : 그래프를 형성하는데 필요한 text들,
예를들면 -2, -1, 0, 1 … 등의 문자들이 필요하다
 Line Object : 그래프를 그릴때 정의역과 치역에 맞
게 line의 위치를 정한다.

Set(handle, ‘propertyname,’ propertyvalue)
주어진 handle에 해당하는 객체의 propertyname을
새로운 propertyvalue로 고쳐준다.
 Set(1)을 통해 어떤 propertyname이 있는지 확인해
보자.
 반드시 지정한 단어들만 사용해야한다.

FIGURE 창

Matlab에 기본적으로 만들어져있는 예제.
알아두면 좋은 GUI HANDLER
Gcf(get current figure) : 항상, 현재 활성화되어 있
는 figure window의 handle값을 갖고 있는 변수.
 Gca(get current axes) : 항상, 현재 활성화되어 있는
figure window에 있는 axies object의 handle값을
갖고 있는 변수.
 Gco(get current onject) : 항상, 현재 활성화되어 있
는 figure window에서 마우스로 클릭한 그래프 요소
의 handle값을 갖고 있는 변수.


Tip : ‘GraphHnd=matlab 그래픽 생성함수’를 통해
서도 handle값을 얻어낼 수 있다.
PLOT2,3
H=plot(X1,Y1,LineSpec,…)
 h=legend('string1','string2',...,pos);

pos
Legend의 위치
-1
좌표계의 오른쪽 밖에 놓는
다.
0
자동 배치
1
Upper-right corner에 놓는
다
2
Upper-left corner에 놓는다
3
Lower-left corner에 놓는다
4
Lower-right corner에 놓는
다
[XlowerLeft YlowerLeft]
Normalized units 체계에서
주어진 좌표 값에 놓는다
MESH SERIES
H=mesh(X,Y,Z) : X,Y가 벡터이고 그 크기가 n,m이
라면 size(Z)=[m,n]이어야 한다.
X,Y가 행렬이면 (X(I,j),Y(I,j),Z(I,j))이 선들의 교점이
된다.
선들의 색은 Z에 의해서 결정된다.
 [X,Y]=meshgrid(x,y) : 주어진 벡터 x,y를 행렬 X,Y
에 대한 각각의 행으로 취한다.

SURF SERIES
H=surf(X,Y,Z)
X,Y가 벡터이고 그 크기가 n,m이면 size(Z)=[m,n]이
어야 한다.
X,Y가 행렬이면 (X(I,j),Y(I,j),Z(I,j))이 선들의 교점이
된다.
선들의 색은 Z에 의해서 결정된다.
 H=surf(Z)
행렬의 크기가 m*n이면 X=1:n Y=1:m로 설정된다.

CONTOUR SERIES
[C,h]=contour(Z,h)
행렬 Z는 x-y 평면대한 높이로 해석된다.
Contour 행렬 C와 handle value를 반환한다.
행렬 Z에 대한 n개의 등고선을 그린다.
 [C,h]=contour(Z,v)
행렬 Z에 대한 등고선을 벡터 v의 값에 근거하여 그려준다.
 [C,h]=contour3(X,Y,Z,n)
행렬 X,Y는 x,y축의 범위를 정한다.

Clabel(C,v)
Contour matrix에 대해 벡터 v의 값을 label로 하여 해당 등고선에
label을 첨가한다.
 Clabel(C,’manual’) // clabel(C,h,’manual’)

Label을 붙이고자 원하는 등고선에서 마우스클릭을 하면 해당 등고
선에 새로운 label이 첨가된다.
그외 (STEM, STAIR, SCATTER3, POLAR, PIE,
BAR)