matlab overview-임종수

108
Matlab Overview

Upload: nstl0101

Post on 08-Nov-2014

141 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Matlab Overview-임종수

Matlab Overview

Page 2: Matlab Overview-임종수

1 번째 시간

Page 3: Matlab Overview-임종수

Course Objectives이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. Matlab 의 소개 .2. Matlab Installation 방법 .3. Matlab 의 구성 .

Page 4: Matlab Overview-임종수

Matlab 의 소개

• Matlab 은 Mathworks Inc. 에서 개발한 Software 이다 .

• 다양한 수치 해석 관련 문제에 대한 Total Solution 제공 .

• 사용하는 OS 에 상관없이 동일한 사용 방법 제공 .

• 수많은 데이터 display functions 제공 .

• 수많은 응용분야에 대한 전문적인 Toolbox 제공 .

• 쉽고 빠른 script 양식의 Coding 기법 이용 .

• 다른 언어 (e.g., C/C++, Ada etc) 로 쉽게 변환 가능 .

• Java 의 고속 interpreter 를 사용한 빠른 실행 속도 .

• 개발용 및 상용 보드에 대한 device driver 제공 .(GPIB, PCI)

• 통신 및 신호처리용 CPU 를 위한 embedded source code 생성 .

Page 5: Matlab Overview-임종수

Matlab 의 구성 .

• Matlab 은 다음과 같은 구성 요소와 시스템 요구사항을 갖는다 .

• Matlab6.1 이하는 CD 2 개 , Matlab6.5 는 CD 3 개로 구성 .

• Full Version 의 경우 1[GB] 이상 필요 .

• 정상적인 사용을 위해서는 256[MB] 이상의 메모리 필요 .

• CPU 는 Pentium-III 급 이상 필요 .

• 보통 , 1[GHz] 이상은 되어야 원활 3 차원 공간그래프를 생성할 수 있음 .

• Matlab M-file 을 C/C++ 로 변환하기 위해서는 C/C++ Compiler 필요 . 단 , Visual Studio 가 가장 적합 .

• MS Office Excel 과 연동하기 위해서는 Excel 필요 .

Page 6: Matlab Overview-임종수

Course Objectives이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. Matlab 의 소개 .2. Matlab Installation 방법 .3. Matlab 의 구성 .

Page 7: Matlab Overview-임종수

Matlab Installation 방법 .

• Matlab 은 다음과 같은 방법으로 Installation 한다 .

• Matlab 의 첫번째 CD 를 Installation.

• 사용하려는 Toolbox 를 선택한다 .

• Toolbox : Matlab 은 광범위한 분야에 적용되는 Software이다 . 그러므로 , 각 분야에 특성화된 전문적인 Library 를 제공하는 데 , 이 Library 를 Toolbox 하고 한다 .

• Toolbox 의 종류 : CDMA, DSP, 최적화 , 통계 etc.

• Installation 도중에 help CD 를 첨가해 준다 .

• Matlab6.5 의 3 번째 CD 는 각 toolbox 에 대한 pdf files이므로 installation 되지 않는다 .

Page 8: Matlab Overview-임종수

원하는 Toolbox 선택 !단 , NT OS 에만 install되는 것이 있다 .

2 번째 help CD Install.단 , 6.5 는 *.pdf files가 3 번째 CD 에 따로 있음 .

Matlab Installation 방법 .

Page 9: Matlab Overview-임종수

Matlab 실행시 문제점 .

• Matlab6.0 의 경우 Office 2000 과 충돌이 벌어진다 .

• 문제점 : 정상적으로 Install 은 되지만 실행이 안됨 .

• 해결책 : Matlab 완벽 가이드 (3,4,5) 에 있는 java 소스 사용.

• 간혹 일부 website 에서 제공하는 소스를 사용하는 경우가 있는데 좋지 않음 .

• Matlab6.1 의 경우 한글 계정에서는 실행이 안됨 .

• 문제점 : Window XP 의 경우 , 정상적으로 Install 은 되지만 한글의 계정에서는 실행이 안됨 .

• 해결책 : 영문 계정을 사용해야 함 .

• Serial port Object 를 정상적으로 사용하기 위해선 Matlab Install directory name 에 “ _” 을 사용하면 안됨 .

Page 10: Matlab Overview-임종수

Course Objectives

1. Matlab 의 소개 .2. Matlab Installation 방법 .3. Matlab 의 구성 .

Page 11: Matlab Overview-임종수

Matlab 의 구성 .

• Matlab6.5 의 경우 다른 software 와의 충돌로 인한 run-time error 는 보고 되지 안은 것으로 알고 있음 .

• Matlab 의 기본 작업 폴더는 “ work” 인데 , 이것을 바꾸어 주는 방법은 다음과 같다 .

D:\matlabR12\Limspace 가 새로운 작업 폴더가 됨 !

Page 12: Matlab Overview-임종수

Matlab 의 구성 .

Matlab6.0, 6.1 의 경우 . Matlab6.5 의 경우 .

Page 13: Matlab Overview-임종수

Review Questions• Matlab 은 어떠한 분야 적합한 software인가 ?

Matlab 은 광범위하게 적용된다 . 예를 들면 , 수치관련 simulation 분야 , 개발용 board 의 device driver 및 Application 개발 등등

• Matlab 을 실행하는 경우 문제가 발생한 경우가 있는가 ?

Matlab6.0 에서 Office2000 과의 충돌문제 .

Matlab6.1 에서 Windows XP 와의 충돌문제 .

Page 14: Matlab Overview-임종수

Summary Matlab 은 초기에 Fortran 으로 개발되었으며 , 행렬과 관련된 선형 대수학적문제를 해결해 주는 Simulation 용 tool 이었다 . 그러나 , 발전을 거듭하여 지금은 고속 인터프리터를 기반으로한 JAVA 를 사용하여 개발된 6.5버전이 2002 년 9 월 정식 출시 되었다 .

Matlab 은 임의의 데이터를 분석하는 데 필요한 다양한 함수들과 수많은 display function 을 제공한다 .

Matlab 은 script 언어이므로 OS 와 무관하게 사용하는 방법이 동일하다 .

Matlab 은 단순 수치 관련 Simulation Toolbox 의 Image 에서 벗어나 이제는 Hardware Interface 에 대한 다양한 Solution 을 제공한다 .

예를 들면 , Xilinx, Altera 와 같은 전문 EPLD vendor 와 공동으로 DSP, 통신 관련 HDL(Hardware Description Language) 를 자동으로 생성해 주는 toolbox 와 TI DSP 의 Code Composer Studio 와 연동하여 쉽게 Application 을 만들어 주기도 한다 . 또한 , Motolora 의 DSP CPU 와도 연동할 수 있도록 toolbox 를 제공하며 , RTOS(Real Time OS) 의 세계적인 강자인 VxWorks 를 지원해주는 toolbox 도 제공되고 있다 .

Page 15: Matlab Overview-임종수

2 번째 시간

Page 16: Matlab Overview-임종수

Course Objectives이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. Matlab 의 데이터 Type.2. Matlab 의 행렬표현 방법 .3. Matlab 의 연산자 .4. 그외 주의해야할 사항들 .

Page 17: Matlab Overview-임종수

Matlab 의 데이터 Type.

• Matlab 은 다음과 같은 데이터 Type 을 지원한다 .

ARRAY

cell struct function handleNUMERICchar

user class

java class

single double

sparse

int8, uint8int16, uint16int32, uint32

이중에서 double, char, cell, struct, function handle 이 가장 많이 사용된다 .

Page 18: Matlab Overview-임종수

Matlab 의 데이터 Type.

• 기본적으로 Matlab 의 배열을 구성하는 원소는 임의의 데이터 Type 을 가질 수 있다 .

• Matlab 은 2 차원 및 3, 4, … 과 같은 다차원 배열을 구성할 수 있다 .

• 각각에 대한 데이터 type 을 설명하면 다음과 같다 .

• char : 문자열을 나타내주는 데이터 type.

• cell, struct : C/C++ 의 struct data type 과 유사한 데이터 type.

• function handle : Matlab6.X 이후버전에서 지원되며 , matlab 의 함수에 대한 pointer 를 의미한다 .

• sparse : 거대한 배열에서 동일한 값을 갖는 원소를 배열 구조에서 빼 냄으로서 효과적으로 배열 연산을 할 수 있도록 해준다 .

• int8, uint8, int16, uint16, int32, uint32 : matlab 은 기본적으로 64-bit double precision 을 갖는다 . 그러나 , 특정 bit 의 데이터폭을 갖는 데이터를 표현할때 효과적이다 .

Page 19: Matlab Overview-임종수

Course Objectives이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. Matlab 의 데이터 Type.2. Matlab 의 행렬표현 방법 .3. Matlab 의 연산자 .4. 그외 주의해야할 사항들 .

Page 20: Matlab Overview-임종수

Matlab 의 행렬표현 방법 .

• >> 변수명 (variable) = 수식 (expression)

• 배열의 첫번째 원소의 index 는 “ 1” 인데 주의 .

• 행 (row) 는 “ ;” 또는 return key 로 구분 , 열 (column) 은 space bar 로 구분 .

631

321

111

A >>A=[1 1 1;1 2 3;1 3 6];

• 문장의 끝에 “ ;” 을 사용하면 , 결과를 display 하지 않음 .

• 하나의 배열에서 사용할 수 있는 원소들의 개수는 2.1475e+009 개이다 .

Page 21: Matlab Overview-임종수

Matlab 의 행렬표현 방법 .

• 복소수의 허수는 단순히 “ i”, “j” 를 사용하면 된다 .

• >> x=1+2i; 또는 >>y=2-3j; 이때 , 수치와 “ i”, “j” 사이에 “*” 연산 기호는 표시하지 않아도 된다 .

• 기본적으로 배열은 열 (column) 방향으로 연산을 해준다 .

•>>A=[1 1 1;1 2 3;1 3 6]; sumA=sum(A)

SumA =

3 6 10

631

321

111

A

Page 22: Matlab Overview-임종수

Matlab 의 행렬표현 방법 .

• 행렬의 transpose 는 2 가지 방법이 제공된다 .

iiA 4321 >>X=[1+2i 3-4i]’

i

iA

43

21

iiA 4321 >>X=[1+2i 3-4i].’

i

iA

43

21

• Matlab 의 행렬 연산에서 “ .(dot)” 는 원소대원소 연산을 해주는 상당히 중요한 의미를 갖는다 .

Page 23: Matlab Overview-임종수

Matlab 의 행렬표현 방법 .

• 배열의 원소는 C/C++ 와 같이 첨자를 사용하여 구분한다 .• >>A=[-1.3 sqrt(3) (1+2+3)/5; exp(3) 4^2 -.145];

• >>A(2,1)

ans =

20.0855

• 위와 같이 행렬 A 를 선언하고 , 다음과 같이 행렬 B 를 생성한 경우를 생각해보자 .

• >>B=[4 1];

그리고 , 다음과 같이 명령을 하면 error 가 발생한다 .• >>C=[A;B]

• 여기서 발생한 error 는 matlab 을 실행하는 경우 빈번히 발생하므로 그 원인을 찾아보기 바란다 .

Page 24: Matlab Overview-임종수

Matlab 의 행렬표현 방법 .

• 원소들에 대한 반복 연산을 위한 “ :” 연산자 !

• “x= 초기치 : 차분 : 최종치”와 같은 형태를 갖는다 .

>> x=1:0.5:3;

x =

1.0000 1.5000 2.0000 2.5000 3.0000

• 배열의 마지막 원소를 가리키는 지정어로 “ end” 가 있다 .

• y=x(end)

y =

3

Page 25: Matlab Overview-임종수

Course Objectives이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. Matlab 의 데이터 Type.2. Matlab 의 행렬표현 방법 .3. Matlab 의 연산자 .4. 그외 주의해야할 사항들 .

Page 26: Matlab Overview-임종수

• Matlab 은 64bits double 형으로 모든 수치 연산을 수행한다 . 그러나 , format.m 함수를 사용하여 다양한 형태로 수치를 표현할 수 있다 .

• 예 ) format rat, format hex 등등

• Matlab 은 배열을 기본 피연산자로 취급하고 다양한 산술 , 논리 , 관계 연산자들을 제공한다 .

• 이들 연산자들은 C/C++ 에서 제공하는 연산자들과 매우 유사하면 동일한 연산 우선 순위를 갖는다 .

• Matlab 의 관계 , 논리 연산자에서 사용하는 참 (true) 과 거짓 (False) 의 정의 :

• 참 (True) : 적어도 하나의 nonzero 의 값을 갖는 원소를 포함하는 임의의 배열 .

• 거짓 (False) : 빈행렬 (Empty Matrix), zero

Matlab 의 연산자 .

Page 27: Matlab Overview-임종수

Matlab 의 연산자 .

• 산술 연산자 : 수치 계산을 수행하는 연산자로써 , 사칙연산이나 거듭 제곱 등을 말한다 .

• 산술 연산자 내에서의 연산 우선 순위는 다음과 같다 .

① transpose( " .’" ), power ( " .^ " ), 복소 공액 transpose( " ’ " ), 행렬의 power( " ^ " )

② unary plus( " + " ), unary minus( " - " )

③ 곱셈 ( " * " ), 오른쪽 나눗셈 ( " ./ " ), 왼쪽 나눗셈 ( " .╲ " ), 행렬의 곱 ( " * " ), 행렬의 오른쪽 나눗셈 ( " / " ), 행렬의 왼쪽 나눗셈 ( "╲ " )

④ 덧셈 ( " + " ), 뺄셈 ( " - " )

⑤ colon 연산자 ( " : " )

Page 28: Matlab Overview-임종수

Matlab 의 연산자 .

• 관계 연산자 : 배열을 구성하는 각각의 원소에 대한 , 작다 (less), 같지 않다 (not equal to) 등 " 을 비교하는 데 이용한다 .

Page 29: Matlab Overview-임종수

Matlab 의 연산자 .

• 논리 연산자 : "AND", "OR" 등의 논리 연산을 수행하며 , TRUE", "FALSE" 와 같은 결과를 알려 준다 .

Page 30: Matlab Overview-임종수

• 임의의 크기를 갖는 배열과 수치 (scalar) 를 연산하는 경우 , 다음과 같이 수치가 연산하려는 배열과 같은 크기를 갖고 동일한 원소를 갖는 배열로 확장된다 .

• 한 개의 line 에 모든 수식을 표현할 수 없을 때는 “…”을 사용하면 된다 .

예 ) >>x=1+2+3+…

4+5+6

Matlab 의 연산자 .

Page 31: Matlab Overview-임종수

Course Objectives이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. Matlab 의 데이터 Type.2. Matlab 의 행렬표현 방법 .3. Matlab 의 연산자 .4. 그외 주의해야할 사항들 .

Page 32: Matlab Overview-임종수

Note

• 수치를 표현할 때 , 0.234 와 .234 는 같은 표현이다 .

• 한 개의 line 에 여러 개의 명령어들을 동시에 지정할 수 있다 .• >>x=3; y=2; z=x+y;

• 빈 행렬이란 원소를 하나도 갖지 않는 행렬을 의미한다 .• >>x=[] % “[]” 은 빈행렬을 만들어 준다 .

• format.m 함수를 사용하여 보다 정밀한 계산 결과를 얻을 수 있다 .

• >> format long

>> pi

ans =

3.14159265358979

Page 33: Matlab Overview-임종수

Note

특수 값을 반환하는 함수들

Page 34: Matlab Overview-임종수

Review Questions• Matlab 에서 일반적으로 가장 많이 사용되는 데이터 type 에는 무엇이 있는가? double, char, cell, struct, function handle

• Matlab 에서 사용하는 배열과 C/C++에서 사용하는 배열은 무엇이 다른가 ?

Matlab 의 첫번째 index 는 “ 1”.

Page 35: Matlab Overview-임종수

Review Questions• Matlab 에서 “ :” 은 어떠한 의미를 갖는가?

배열을 구성하는 원소들을 반복적으로 생성해 주는 연산자 .

>>x= 초기치 : 차분 : 최종치

• Matlab 에서 “ .” 과 관련된 연산자로는 무엇이 있는가 ?

.^ .* ./ .╲

Page 36: Matlab Overview-임종수

Review Questions• Matlab 에서 “ eps” 가 돌려주는 값은 어떠한 의미를 갖는가 ?

matlab 이 인식할 수 있는 가장 작은 값 .

• Matlab 에서는 어떠한 연산자들이 제공되는가 ?

산술 , 관계 , 논리연산자들

• matlab 에서 각도는 기본적으로 radian인가 degree 인가 ?

radian.

Page 37: Matlab Overview-임종수

Summary Matlab 은 보다 편리한 수치연산과 데이터 분석을 할 수 있도록 수많은 데이터 types 를 제공한다 .

배열을 구성하는 원소는 임의의 데이터 type 의 결과를 만들어 주는 함수가 될 수 있다 .

“ . ” 및 “ ’ ”는 matlab 에서 특별히 중요한 의미를 갖는다 .

“ . ” : 원소대 원소 연산을 하는 경우에 사용된다 .

“ ’ “ : 행렬의 transpose 를 수행하는 2 가지 방법을 제공한다 .

산술 , 논리 , 관계 연산자를 제공하는 데 , 여기서 주의 할 것은 참 (True) 과 거짓 (False) 에 대한 분명한 이해이다 .

Matlab 은 C/C++ 언어와 같이 첨자를 사용하여 배열의 원소를 구분하고 , 보다 쉽게 배열의 원소를 만들 수 있도록 “ :” 을 제공한다 .

“:” 는 M-File Programming 에서 매우 중요하게 다루게 될 연산자이므로 그 특성을 특별히 주의 깊게 살펴보기 바란다 .

Page 38: Matlab Overview-임종수

3 번째 시간

Page 39: Matlab Overview-임종수

Course Objectives이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. Matlab 이 사용하는 file 의 종류 .2. Function Mode M-file 작성 방법 .3. Script Mode M-file 작성 방법 .4. 명령어의 흐름제어 .5. 전역 변수와 debugging 방법 .

Page 40: Matlab Overview-임종수

Matlab 이 사용하는 file 의 종류

• 기본적으로 확장자가 m 인 file 을 사용한다 .

• 그밖에도 Simulink, state flow 에서 사용하는 file 과 dynamic link file 들을 사용한다 . 그러나 , 여기서는 *.m file 의 작성 방법과 그 사용방법을 중점적으로 살펴볼 것이다 .

• matlab6.X 버전부터는 Excel 을 toolbox 와 같이 사용하며 , java도 제공한다 .

• matlab6.X 버전부터 “ import wizard” 기능을 사용하여 쉽게 임의의 형식으로된 데이터 file 및 멀티미디어 file 을 사용할 수 있다 .

• matlab6.X 버전부터 Xilinx 의 System generation, Altera 의 DSP Builder 를 사용하여 VHDL, Verilog 와 같은 HDL 언어를 자동으로 생성해 준다 .

Page 41: Matlab Overview-임종수

Course Objectives이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. Matlab 이 사용하는 file 의 종류 .2. Function Mode M-file 작성 방법 .3. Script Mode M-file 작성 방법 .4. 명령어의 흐름제어 .5. 전역 변수와 debugging 방법 .

Page 42: Matlab Overview-임종수

Function Mode M-file 작성 방법 .

• Matlab 에서 사용하는 기본적인 file 로 M-file 이 있는 데 , 크게 , function mode M-file, Script mode M-file 이 있다 .

• Function Mode M-file :① “function” 이라는 지정어로 시작한다 .② 입 , 출력 매개변수를 갖는다 . 단 , 필요 따라서 입 , 출력

매개 변수를 갖지 않을 수 있다 .③ Function mode M-file 에서 지정한 변수들은 해당 M-file

에서만 사용할 수 있다 .function Z=Func_name(x, y)

% Function 에 대한 주석…

Function 의 몸체

Page 43: Matlab Overview-임종수

Function Mode M-file 작성 방법 .

>>help fact

FACT Factorial.

Fact(n) 함수는 n 에대한

factorial 을 반환한다 .

일반적으로 , n! 로 표시한다 .

Base workspace

Function workspace

Page 44: Matlab Overview-임종수

Function Mode M-file 작성 방법 .

• Function Mode M-file 에서 새롭게 정의한 변수들은 모두 지역 변수 (Local Variable) 이다 . => Function workspace.

• Function workspace 에서 선언한 변수와 Base Workspace 에서 선언한 변수간에 데이터를 교환하기 위해서는 다음과 같이 2가지 방법이 있다 .

• 입 , 출력 매개변수를 이용하는 방법 .

• 전역 변수 (global variable) 를 사용하는 방법 .

• Function M-file 만 matlab Compiler 를 사용하여 target Language( 즉 , C/C++ 언어 ) 로 바뀔 수 있다 .

• Lookfor.m 함수는 첫번째 주석 (Comment) 에 있는 단어를 참조하는 함수이다 .

Page 45: Matlab Overview-임종수

Course Objectives이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. Matlab 이 사용하는 file 의 종류 .2. Function Mode M-file 작성 방법 .3. Script Mode M-file 작성 방법 .4. 명령어의 흐름제어 .5. 전역 변수와 debugging 방법 .

Page 46: Matlab Overview-임종수

Script Mode M-file 작성 방법 .

• Script Mode M-file 은 일정한 형식이 없는 일종의 batch file이다 .

• Matlab6.X 부터는 보다 쉽게 Script M-file 을 작성할 수 있게 도와주고 있다 .

1

23

새로운Script M-file생성

새로운Script M-file생성

4

Page 47: Matlab Overview-임종수

Script Mode M-file 작성 방법 .

• Script Mode M-file 에서 선언한 변수들은 Base Workspace 에서 선언한 변수들과 자유롭게 데이터를 교환할 수 있다 .

• Script M-file 은 Matlab Compiler 를 사용하여 다른 언어로 변환 할 수 없다 .

• Script Mode 와 Function Mode 를 혼용한 M-file 은 만들 수 없다 .

Page 48: Matlab Overview-임종수

Course Objectives

이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. Matlab 이 사용하는 file 의 종류 .2. Function Mode M-file 작성 방법 .3. Script Mode M-file 작성 방법 .4. 명령어의 흐름제어 .5. 전역 변수와 debugging 방법 .

Page 49: Matlab Overview-임종수

명령어의 흐름제어 .

• Matlab 은 다른 언어와 마찬가지로 다음과 같이 다양한 흐름제어를 사용할 수 있다 .

① if, else, elseif, end

② switch, case, otherwise, end C/C++ 언어의 default 와 달리 otherwise 를 사용한다 .

③ for, end

④ While, end

⑤ Try, catch, end

• 특별히 , 참 (true) 와 거짓 (false) 에 대한 명확한 이해가 있어야 한다 .

Page 50: Matlab Overview-임종수

• 특별히 , 참 (true) 와 거짓 (false) 에 대한 명확한 이해가 있어야 한다 .

• 일반적으로 switch, case 문 보다는 if, else 문이 더 안정된 program 구조를 갖는다 .

• switch 문에서 match 되는 case 를 발견한 경우 , 발견된 case문만 실행하므로 C/C++ 언어와 같이 default 문을 사용하지 않아도 된다 .

• switch 문에서 default 대신 otherwise 를 사용하는 데 주의하자 !

• for 문을 사용하는 경우 , matlab 의 first array index 가 “ 1” 인데 주의하자 !

• matlab 에도 C/C++ 언어와 같이 break, continue 문이 존재한다 .

명령어의 흐름제어 .

Page 51: Matlab Overview-임종수

Course Objectives

이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. Matlab 이 사용하는 file 의 종류 .2. Function Mode M-file 작성 방법 .3. Script Mode M-file 작성 방법 .4. 명령어의 흐름제어 .5. 전역 변수와 debugging 방법 .

Page 52: Matlab Overview-임종수

전역 변수와 debugging.

• 전역 변수로 선언하면 , 임의의 function mode m-file 에서 선언한 변수를 다른 function 또는 base workspace 에서 선언한 변수와 서로간에 데이터 교환을 할 수 있게 해 준다 .

function z=AnyFunc(n)Temp=n+1;z=Temp + 2;

>>Resn=10;>>Resz=AnyFunc(Resn)>>Temp

Any Function M-file Base Workspace

Temp 교환 불가!

function z=AnyFunc(n)global Temp Temp=n+1;z=Temp + 2;

>>Resn=10;>>Resz=AnyFunc(Resn)>>global Temp>>Temp

Temp 교환 가능!

Page 53: Matlab Overview-임종수

Review Questions• Matlab 에서 사용하는 workspace 에는 어떤 것들이 있으며 , 각각의 특징은 어떻게 되는 지 설명해 보시오 .

base workspace : matlab 의 command windows 가 저장하고 있는 데이터 공간으로서 script mode m-file 과 데이터 교환을 할 수 있다 . function workspace : 임의의 함수에서 선언한 변수들을 저장하고 있는 공간으로서 다른 함수 , 또는 base workspace 와 데이터 교환이 불가능하다 .

Page 54: Matlab Overview-임종수

Review Questions• 조건문에서 “같지 않다”를 matlab 과 C/C++ 에서 각각 어떻게 표현하는가 ?

matlab : ~= C/C++ : !=

• matlab 에서 for, while 과 같은 반복문을 사용하는 것은 좋지 않다 . 무엇을 대신 사용하는 것이 좋은가 ?

: (colon operator)

• 전역 변수를 선언하기 위해서 사용하는 지정어는 무엇인가 ?

global

Page 55: Matlab Overview-임종수

Summary Matlab 에서 사용하는 기본 파일은 m-file 이다 . m-file 에는 script mode m-file 과 function mode m-file 이 있다 . script mode m-file 은 일정한 파일 양식이 없지만 , function mode m-file 은 반드시 function 이라는 지정어와 함께 시작해야 한다 . script mode m-file 은 matlab 의 command window 에서 선언한 변수를 사용할 수 있지만 , function mode m-file 은 입 , 출력 매개변수와 전역 변수를 사용해야 function 외부에서 선언한 데이터를 사용할 수 있다 . script mode m-file 과 function mode m-file 은 한 개의 m-file 에서 사용할 수 없다 . script mode m-file 은 mcc 를 사용하여 stand-alone 하게 만들 수 없다 . 전역 변수를 많이 사용하면 , 프로그램간의 계층화에 어려움이 있으므로 , 가능하면 , 입 , 출력 매개변수를 사용하는 것이 좋다 . 작은 함수를 작성하는 경우에는 다음 시간에 배울 inline.m 함수를 사용하는 것이 좋다 . 동일한 m-file 에서 선언한 서로 다른 함수간 , 또는 재귀 형태의 함수를 작성한 경우 , 각각의 내부 변수들은 교환이 되지 않는다는 데 주의하자 !

Page 56: Matlab Overview-임종수

4 번째 시간

Page 57: Matlab Overview-임종수

Course Objectives이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. Matlab 의 데이터 type.2. M-file 시 유용한 함수들 .

Page 58: Matlab Overview-임종수

Matlab 의 데이터 type.

• 다차원 배열 (double) :

matlab 은 2, 3 차원 이상의 배열을 선언할 수 있다 .

배열의 구성 원소는 임의의 데이터와 함수값들이 될 수 있다 .

Page 59: Matlab Overview-임종수

Matlab 의 데이터 type.

• 문자열 (string) :

문자열은 단일 인용부호 ( 즉 , ‘ ,’) 를 사용하여 표현한다 .

>>s=‘lim jong su’

Matlab 은 문자들을 해당하는 ASCII Code 값으로 바꾸어 저장한다 .

>> d=double(s(1))

d =

108

문자열로 변환 할 때수치로 변환 할 때

Char.m 함수 사용

Double.m 함수 사용

Page 60: Matlab Overview-임종수

Matlab 의 데이터 type.

• 문자열로 이루어진 수식을 계산할 때는 eval.m, feval.m 함수를 사용해야 한다 .

• Matlab 에서는 2 가지 type 의 구조체 데이터 type 을 제공한다.

cell data type : 배열과 연관된 구조체 data type 선언할 때.

struct data type : C 언어와 동일한 구조의 data type 선언시.>> A{1,1} = 1:10;

>> A{1,2} = 'Jong Su';

>> B.num=1:10;

>> B.Str='Jong Su‘;

cell data type Struct data type

Cell data type 은 “ {, }” 을 사용 !

struct data type 은 “ .” 을 사용!

Page 61: Matlab Overview-임종수

Matlab 의 데이터 type.

• matlab 6.x 부터는 function handle 이라는 새로운 데이터 type을 지원 .

C 언어에서 사용하는 함수에 대한 pointer 와 동일한 개념 .

function x=demo(y)

… 임의의 demo 함수 내용 …

function a=FHndDemo(b)

demoHnd=@demo;

… 임의의 함수 내용 …

a=feval(demoHnd,b);

• function handle 은 일반적으로 feval.m 함수와 함께 사용된다 .

• “@” 를 사용하여 임의의 함수에 대한 function handle 을 만든다는 것에 주의 !

Page 62: Matlab Overview-임종수

Course Objectives이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. Matlab 의 데이터 type.2. M-file 시 유용한 함수들 .

Page 63: Matlab Overview-임종수

M-file 작성시 유용한 함수들 .

• input.m 함수는 입력 prompt 를 사용하여 데이터를 받을 수 있도록 도와 준다 . C 언어의 scanf 함수와 유사하다 .• menu.m 함수는 간단한 button 구조의 GUI 함수를 만들어 준다 .• matlab 은 다양한 dialog 형 함수들을 제공하고 있다 .

helpdlg.m, inputdlg.m, pagedlg.m, printdlg.m, errordlg.m, warndlg.m

• M-file 의 소스 code 를 암호화 해주는 pcode.m 함수가 있다 .

>>pcode demo.m위와 같이 pcode.m 함수를 사용하여 demo.m 함수를 암호화 한 demo.p 함수로 만들어 줄 수 있다 .! 주의 : 정확하게 암호화는 아니고 , 주어진 함수를 parsing한 것이다 .

Page 64: Matlab Overview-임종수

• inline.m 함수 : 입력 매개변수로 주어진 문자열 수식을 inline object 라는 새로운 데이터 type 으로 만들어 준다 .

>> g=inline('t^2')

g =

Inline function:

g(t) = t^2

>> g(2)

ans =

4

M-file 작성시 유용한 함수들 .

Page 65: Matlab Overview-임종수

Review Questions• Matlab 의 구조체에는 어떤 것들이 있는가 ?

cell data type, struct data type

• cell data type 의 구조체에 멤버 변수들을 저장하기 위해서 사용하는 기호는 무엇인가 ?

{, }

• cell data type 의 구조체에는 어떤 종류의 데이터가 멤버 변수로 저장 될 수 있는가 ?

matlab 이 지원하는 모든 데이터 type.결국 , 멤버 변수로 cell data type 이 재차 사용될 수 있다 .

Page 66: Matlab Overview-임종수

Review Questions• cellplot.m 함수는 어떤 함수인가 ?

cell 구조체에 저장되어 있는 멤버들을 그림으로 표현해 주는 함수 .

• struct 구조체의 멤버로 함수를 저장할 수 있는가 ?

function handle 을 사용하면 가능하다 .

• cell.m 과 struct.m 함수는 어떤 함수인가? cell data type 과 struct data type 의 데이터를 만들어 주는 함수들 .

Page 67: Matlab Overview-임종수

Review Questions• menu.m 함수를 사용하여 간단한 함수를 직접 만들어 보시오 .

스스로 작성해 볼 것 .

• msgbox.m 함수를 사용하여 간단한 함수를 직접 만들어 보시오 .

스스로 작성해 볼 것 .

• inline.m 함수를 사용면 프로그램 실행 속도에 어떤 영향을 주는가 ?

일반적으로 작성한 function mode m-file 보다 실행 속도가 빠르다 .

Page 68: Matlab Overview-임종수

Summary

Matlab 은 다양한 데이터 type 을 지원한다 . 차원에 제한이 없는 double data type. 문자열 cell data type : “(, )” 대신 “ {, }” 을 사용 struct data type : “(, )” 대신 “ .” 을 사용 functional handle : “@” 을 사용 inline object 그밖에 다양한 데이터 type 을 지원 .

cell data type, struct data type 은 멤버 변수로 계속해서 구조체를 사용할 수 있다 . 일반적으로 cell data type 을 많이 사용한다 . functional handle 을 올바로 사용하기 위해서는 feval.m 함수에 대해서 자세히 알아야 한다 . matlab 은 다양한 대화형 (dialog) 함수들을 제공한다 .

Page 69: Matlab Overview-임종수

5 번째 시간

Page 70: Matlab Overview-임종수

Course Objectives이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. Handle Graphics System.2. 다양한 그래픽 함수들 .3. 파일 입 , 출력 함수들 .

Page 71: Matlab Overview-임종수

Handle Graphics System.

• matlab 은 다음과 같이 그래픽 요소에 대한 계층 구조를 갖는다.

Page 72: Matlab Overview-임종수

Handle Graphics System.

figure Object

axes Object

surface Object

Peaks

text Object

Page 73: Matlab Overview-임종수

Handle Graphics System.

• 만일 , axes object 를 지우면 , 하위 surface object, text object는 자동으로 없어지는 계층형 구조라는 데 주의 하자 !

>>delete(gca)

• axis off 는 axes object 를 안보이게 하는 것이지 지우는 것이 아닌데 주의하자 .

• 각각의 그래픽 요소들은 자신의 모양을 제어할 수 있도록 propertyname 과 propertyvalue 들을 갖고 있다 .

• 이들 propertyname 과 propertyvalue 들을 조정하는 함수로는 set.m 함수가 , 그리고 , 현재 propertyname 과 propertyvalue들에 대한 데이터를 얻는 데는 get.m 함수가 사용된다 .

>>set( 그래픽 _handle_value, ‘propertyname’,’propertyvalue’)

>>Propertyvalue=get( 그래픽 _handle_value, ‘propertyname’)

Page 74: Matlab Overview-임종수

Handle Graphics System.

• 임의의 그래픽 요소에 대한 propertyname 중에서 ‘ position’ 은 그래픽 요소의 위치를 제어한다 .

• figure object 의 하위 그래픽 요소들에 대한 위치의 기준점은 위에 주어진 그림과 같이 figure window 의 왼쪽 하단이 되고 , figure object 의 기준점은 matlab desktop 의 왼쪽 하단이 된다 .

Page 75: Matlab Overview-임종수

Handle Graphics System.

• 그래픽 요소들을 구분하기 위해서 각각의 그래픽 요소들에게는 matlab 이 자동으로 handle value 를 할당한다 .

figure object 의 경우 handle value 는 자연수 . figure object 의 하위 그래픽 요소들의 handle value 는 소수 .

• 사용자가 쉽게 원하는 그래픽 요소에 대한 handle value를 얻을 수 있도록 다음과 같은 변수들을 제공한다 .

gcf(get current figure) : 현재 활성화되어 있는 figure object 의 handle value 를 저장하고 있다 . gca(get current axes) : 현재 활성화되어 있는 axes object 의 handle value 를 저장하고 있다 . gco(get current object) : mouse 로 가장 최근에 click 한 그래픽 object 의 handle value 를 저장하고 있다 .

Page 76: Matlab Overview-임종수

Course Objectives이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. Handle Graphics System.2. 다양한 그래픽 함수들 .3. 파일 입 , 출력 함수들 .

Page 77: Matlab Overview-임종수

다양한 그래픽 함수들 .

• matlab 은 다양한 그래픽 함수들을 제공한다 . 2 차원 함수 : plot.m, contour.m, stem.m, stairs.m, pie.m, bar.m, etc

3 차원 함수 : mesh.m, surf.m, contour3.m, plot3.m, etc

복소 함수 : polar.m, rose.m, feather.m, compass.m, etc

보조 함수 : meshgrid.m, hidden on/off, legend.m,rotate3d.m etc

좌표변환 함수 : cart2pol.m, pol2cart.m, cart2sph.m, sph2cart.m

• 모든 그래픽 함수들은 자신이 만든 그래프를 조정할 수 있도록 각각의 그래픽 요소에 대한 handle value 를 반환한다 .

• 3 차원 공간 vector 의 움직임을 표현할 수 있도록 volume visualization 기술이 있다 . [ 교재 : page 384 참고 ]

Page 78: Matlab Overview-임종수

다양한 그래픽 함수들 .

• plot.m 함수의 사용 방법 :

>> t=-5:1/100:5;

>> y=1./((t-.3).^2+.01)+1./((t-.9).^2+.04)-6;

>> LnHnd=plot(t,y)

LnHnd =

3.0015

>>set(LnHnd,'color','r')

set.m 함수로 line 의 color를 조정하고 있다.

Page 79: Matlab Overview-임종수

다양한 그래픽 함수들 .

• LnHnd 는 그래픽 요소 중에서 line object 이므로 line object 가 갖고 있는 임의의 특징들을 set.m, get.m 함수들을 사용하여 모두 사용할 수 있다 .

• line object 외에도 다른 많은 그래픽 요소들을 제어할 수 있다 .

예를 들면 , 다음과 같이 x, y, z 축에 대한 범위를 조정한다거나…

>>set(gca,’xlim’,[0 inf])Grid 를 첨가한다거나…

>>set(gca,’xgrid’,’on’, …

‘ygrid’, ‘on’)

Figure window 의 배경색을

회색에서 흰색으로 바꾸거나…

>>set(gcf,’color’,’w’)

Page 80: Matlab Overview-임종수

다양한 그래픽 함수들 .

• 좌표축의 범위를 정할 때는 axes object 의 ‘ xlim’, ‘ylim’, ‘zlim’ 이라는 propertyname 을 사용하는 데 , “ 음의 무한대”는 – inf 로 표현하고 , “양의 무한대”는 inf 로 표현한다 .

• 기본적으로 matlab 은 그래프를 표현할 때 , 만들어진 axes object 의 범위에 충분히 꽉차도록 그림을 좌우로 잡아 당기는 경향이 있다 . 그러므로 , image, 또는 실제 크기를 갖는 데이터를 표현할 때는 axis equal, 또는 axis image 명령을 추가해 주어야 한다 . [ 교재 274 참고 ]

• matlab 은 2 개의 이상의 좌표축을 하나의 figure window 에 만들 수 있다 . 직접 axes object 를 제어할 수도 있지만 , subplot.m 함수를 사용하면 보다 간단히 표현할 수 있다 .

>> x=-pi:pi/20:pi;

>> subplot(1,2,1); plot(x,cos(x),'r') % 한 개의 line 에 여러 개의 독립된

>> subplot(1,2,2); plot(x,sin(x),'b') % 명령어들을 동시에 선언할 수 있다 .

위와 같이 명령하면 , 하나의 figure 에 2 개의 axes 가 만들어 진다 .

Page 81: Matlab Overview-임종수

다양한 그래픽 함수들 .

• 3 차원 그래프를 만들기 위해서는 2 차원 평면 구조의 좌표들이 필요하다 . 또한 , 3 차원 공간 vector 를 표현해 주기 위해서는 3 차원 격자 구조를 갖는 좌표들이 필요하다

• 위와 같은 좌표들을 만들어 주는 함수가 meshgrid.m 함수이다 .

Page 82: Matlab Overview-임종수

다양한 그래픽 함수들 .

• 3 차원 데이터를 표현하는 함수 중에서 가장 많이 사용되는 함수로 mesh.m 함수가 있다 .

>> [X,Y]=meshgrid(-2:.25:2);

>> Z=X.*exp(-X.^2-Y.^2);

>> mesh(X,Y,Z)• matlab 6.X 의 figure window 에 있는

도구 bar 의 icon 들을 각각 click

해 보면서 기능들을 확인해 보기 바란다 .

또한 , 왼쪽 위를 가리키는 화살표를

Click 한 뒤에 , 그래프를 double click

하면 , 현재 figure window 에 있는

모든 그래픽 요소들을 쉽게 제어할 수

있는 window 가 나타난다 .

Page 83: Matlab Overview-임종수

다양한 그래픽 함수들 .

• 그래프로 표현하고 싶지 않은 부분은 해당 데이터를 NaN 으로 setting 하면 된다 .

• contour.m 함수는 등고선을 표현해 주는 함수이고 , stem.m 함수는 discrete signal 을 표현하는 데 사용된다 .

• Figure Window 의 menu bar 에서 View/Camera Toolbar menu를 click 하면 , 주어진 그래프에 camera 효과를 줄 수 있다 .

• 복소수를 표현해 주는 함수로 가장 많이 사용되는 함수는 polar.m 함수이다 .

polar.m 함수는 주어진 데이터를 대응하는 각도 (theta, 단위는 radian) 와 크기 (rho) 로 변환하여 표현한다 .

• 일반적으로 matlab 은 직각 좌표계를 사용하여 데이터를 표현하므로 , X^2+y^2=3 과 같은 그래프는 표현 할 수 없다 .

Page 84: Matlab Overview-임종수

다양한 그래픽 함수들 .

• x^2+y^2=3 과 같은 함수들을 표현해 주기 위해서는 직각 좌표계를 구 좌표계로 변환해 주어야 matlab 으로 표현할 수 있다 . [ 교재 402 “ 연습 문제” 2 번 참고 ]

• [ 교재 402 의 “연습 문제”

2 번에는 복소 함수 polar.m

뿐만 아니라 , 좌표계의 변환

등에 대해서 자세히 설명하고

있으니 꼭 한번 읽어보기 바란다 .

• 왼쪽 그림은 X^2+y^2+(z-1)^2=1 을 그래프로

표현한 것이다 .

Page 85: Matlab Overview-임종수

다양한 그래픽 함수들 .

• matlab 은 3 차원 공간 vector 로 이루어진 데이터를 표현 할 수 있다 . 예를 들면 , 태풍의 힘과 방향을 각각의 공간 좌표에서 표현할 수 있다 . 이 문제는 상당히 어려운 내용이다 . 교재 384에 보면 자세히 설명되어 있으니 참고하기 바란다 .

• matlab 은 animation 과 동영상을 만들 수 있는 기능을 가지고 있다 . 간단한 예로 comet.m 함수를 다음과 같이 시험해 보기 바란다 .

>> t = -pi:pi/200:pi;

>> comet(t,tan(sin(t))-sin(tan(t)))

• animation 을 위해서 line object 는

Erasemode propertyname 을 가지고 있다 .

이들에 대한 내용은 [ 교재 379] 를 참고

하기 바란다 .

Page 86: Matlab Overview-임종수

Course Objectives이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. Handle Graphics System.2. 다양한 그래픽 함수들 .3. 파일 입 , 출력 함수들 .

Page 87: Matlab Overview-임종수

파일 입 , 출력 함수들 .

• 기본적으로 matlab 에서 사용하는 file 입 / 출력 함수는 save.m, load.m 함수이다 .

• save.m 함수는 주어진 데이터를 *.mat file 로 저장하고 , load.m 함수는 *.mat file 로부터 데이터를 읽어낸다 .

>> x=magic(3); y='Lim Jong Su'; z=3+2i;

>> save DataFile x y z

위와 같이 명령하면 , 변수 x, y, z 에 저장되어 있는 데이터가 DataFile.mat file 에 저장된다 .

>>clear all % base workspace 에 있는 모든 데이터를 지운다 .

>>load DataFile

위와 같이 명령하면 , DataFile.mat file 에 저장되어 있는 x, y, z 데이터를 base workspace 로 불러낸다 .

Page 88: Matlab Overview-임종수

파일 입 , 출력 함수들 .

• C/C++ 언어에서 사용하는 fopen.m, fscanf.m, fprintf.m, fclose.m 함수를 지원하며 , 사용 방법은 동일하다 .

• 일반적인 Windows 파일 입 / 출력 dialog box 를 사용할 수 있다 .

uigetfile.m, uiputfile.m

• matlab6.X 부터는 쉽게 외부 데이터 file 을 읽어들일 수 있도록 “ import wizard” 기능을 지원한다 .

matlab desktop 에서 File/Import Data… menu 를 click하면 , import window 가 나타나고 , 여기서 , 읽어들일 데이터 파일을 선택하면 , import wizard window 에서 읽어들인 데이터를 matlab base workspace 로 옮겨준다 .

만일 , clipboard 에 저장되어 있는 데이터를 읽어들이려면 , matlab desktop 에서 Edit/Paste Special… menu 를 click하면 , import wizard window 가 나타난다 .

Page 89: Matlab Overview-임종수

파일 입 , 출력 함수들 .

• matlab 은 excel 을 자신 toolbox 처럼 사용할 수 있다 . 그러나, 이 기능을 사용하기 위해서는 excel link 라는 toolbox 가 필요하다 .

• excel 과 matlab 이 데이터를 상호 교환하기 위해서는 excel link toolbox 에 있는 excllink.xla 를 excel 의 추가 기능에 첨가 해 주어야 한다 . 그렇게하면 , excel 에 3 개의 추가적인 icon 이 생겨난다 .

Page 90: Matlab Overview-임종수

파일 입 , 출력 함수들 .

• 이밖에도 MS word 를 matlab command window 처럼 사용할 수 있도록 도와주는 notebook 기능도 가지고 있다 .

• excel link, Notebook 기능을 사용하면 , matlab 과 excel, MS word 가 동시에 실행되므로 memory 부담이 큰데 주의하자 !

Page 91: Matlab Overview-임종수

Review Questions• Matlab 에서 사용하는 handle value 란 무엇인가 ?

그래프를 구성하는 각각의 그래픽 요소에 고유하게 주어진 이름 .

• Matlab 에서 가장 높은 계층은 무엇인가 ?

root object(Matlab desktop 을 의미 ).

• figure object 의 handle value 는 기본적으로 어떤 값을 갖는가 ?

자연수

Page 92: Matlab Overview-임종수

Review Questions• 미분 , 적분과 같은 수식을 matlab 에서 표현하려면 어떻게 해야하는 가 ?

text object 를 사용 .

• universal propertyname 이란 무엇인가 ?

모든 그래픽 요소들이 공통으로 갖고 있는 propertyname 을 의미 .

• 임의의 propertyname 을 조정하기 위해서는 어떤 함수를 사용하는가 ?

set.m 함수 .

Page 93: Matlab Overview-임종수

Review Questions• plot.m 함수가 돌려주는 handle value 는 어떤 그래픽 요소에 대한 것인가 ?

line object

• polar.m 함수의 좌표계는 원형으로 되어 있다 . 원형 좌표계를 어떻게 만들었는가 ?

직각 좌표계로 하나의 원을 그리고 , 그 원에 ticklabel 과 tick 을 추가 한 뒤에 , axis off 로 직각 좌표계를 안 보이기 한 것이다.

Page 94: Matlab Overview-임종수

Review Questions• 3 차원 공간 그래프를 그리기 위해서는 기본적으로 meshgrid.m 함수를 사용해야 한다 . meshgrid.m 함수는 어떤 일을 하는 함수인가 ?

2 차원 평면 , 3 차원 공간 좌표값들을 생성해 주는 함수

• mesh.m 함수와 함께 쓰이는 hidden on/off 함수는 어떤 함수인가 ?

3 차원 언덕에 가려서 보이지 않는 계곡을 보여주기 위해서는 hidden off 를 명령해 주어야 한다 .

Page 95: Matlab Overview-임종수

Review Questions• surf.m 함수와 자주 사용되는 shading.m 함수는 무슨 함수인가 ?

shading flat, shading interp 와 같이 명령하여 surf.m 함수를 구성하는 patch object 의 모서리를 처리해 주는 함수 .

• 일반적으로 x 축은 왼쪽에서 오른쪽으로 증가하는 특징을 갖는다 . 반대로 증가하도록 axes object 를 조정하기 위해서는 어떤 propertyname 을 사용해야 하는가 ?

‘xdir’ propertyname.

Page 96: Matlab Overview-임종수

Review Questions• 파일 입 / 출력에서 사용되는 save.m, load.m 함수는 어떤 파일을 다루는가 ?

*.mat file

• import wizard 기능을 사용하여 임의의 그림 파일을 읽어들 일 수 있는가 ?

읽어들일 수 있다 .

• fopen.m, fclose.m 함수는 어떤 일을 하는가 ?

주어진 파일을 열어서 파일 pointer 를 돌려주고 (fopen.m). 주어진 파일을 닫는다.(fclose.m)

Page 97: Matlab Overview-임종수

matlab 이 표현하는 모든 그래프들은 기본적인 그래픽 요소들로 이루어져 있다 . 각각의 그래픽 요소들은 고유한 이름 , 즉 , handle value 를 갖는다 . 각각의 그래픽 요소들은 계층 구조를 이루고 있다 . 각각의 그래픽 요소들은 자신의 모습을 조정할 수 있도록 propertyname 과 propertyvalue 들을 가지고 있다 . set.m, get.m 함수를 사용하여 그래픽 요소를 제어한다 . plot.m, mesh.m, polar.m 등과 같이 주어진 데이터의 특성에 맞게 표현할 수 있도록 matlab 은 다양한 그래픽 함수들을 제공한다 . 그래프를 바라보는 각도를 조정할 수 있도록 rotate3d.m 함수를 제공하며 , 보다 진보된 camera 기능도 제공한다 . 표현하고 싶지 않은 데이터는 해당 데이터에 NaN 을 입력하면 된다 . 일반적으로 matlab 이 제공하는 모든 그래픽 함수들은 mcc 를 사용하여 모두 stand alone 하게 바꿀 수 있다 . 파일 입 / 출력을 하는 데 기본적으로 사용되는 함수로는 save.m, load.m함수가 있고 , matlab6.X 부터는 import wizard 기능이 새롭게 제공된다 . matlab 은 excel, MS word 를 자신의 toolbox 처럼 사용할 수 있다 .

Summary

Page 98: Matlab Overview-임종수

5 번째 시간

Page 99: Matlab Overview-임종수

Course Objectives이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. 2 진 연산 방법 .2. 선형 대수학 .

Page 100: Matlab Overview-임종수

2 진 연산 방법 .

• analog 신호와 digital 신호의 개념 :

Analog 신호 : 시간과 크기가 연속적인 신호 .

Digital 신호 : 시간과 크기에 대해서 불연속적이며 , 0 과 1의 크기를 갖는 신호 .

Discrete 신호 : 시간에 대해서는 불연속 , 크기에 대해서는 연속인 신호 .

• Digital 신호에서 사용하는 “ 0” 과 “ 1” 각각을 bit 라고 하며 , 이들 bit 가 8 개 모인 bitsream 을 byte 라고 한다 . 또한 , 4 개 모인 bitsream 을 nibble 이라고 한다 .

Analog Signal Digital Signal

AD Converter

DA Converter

Page 101: Matlab Overview-임종수

2 진 연산 방법 .

Page 102: Matlab Overview-임종수

2 진 연산 방법 .

• Matlab 은 진수를 바꾸어 주는 다양한 함수들이 있다 . hex2dec.m, dec2hex.m bin2dec.m, base2dec.m, dec2base.m etc

Page 103: Matlab Overview-임종수

2 진 연산 방법 .

• Hardware 및 firmware 에 종사하는 경우 , 10 진수보다는 16진수와 2 진수를 많이 다루게 된다 .

예를 들어서 , 1 부터 15 를 16 진수로 표현하려면 , 다음과 같이 하면 된다 .

>> A=1:15;

>> HexA=dec2hex(A)'

HexA =

123456789ABCDEF

단 , 반환된 HexA array 는 16 개의 문자들로 이루어져 있다는 데 주의하자!

이번에는 16 진수 123 을 2 진수로 표현하는 방법을 알아보자 .

>> Hex2Bin=double(dec2bin(hex2dec('123'),8))-48

Hex2Bin =

1 0 0 1 0 0 0 1 1

기존에 C 언어에 경험이 있는 분이라면 , 48 을 뺀 이유를 알 수 있을 것이다 .

Page 104: Matlab Overview-임종수

2 진 연산 방법 .

• 소수를 2 진수로 변환하는 방법은 다소 복잡한 것이 사실이다 .

예를 들어서 , 0.6875 를 2 진수로 바꾸기 위해서는 다음과 같은 과정을 거쳐야 한다 .

• [ 교재 464 에 있는 LimDec2Bin.m 함수는 주어진 소수를 2진수로 변환해 주는 함수이다 . 이 함수를 특별한 알고리즘을 사용하고 있으므로 주의깊게 살펴보기 바란다 .

Page 105: Matlab Overview-임종수

2 진 연산 방법 .

• 주어진 소수를 2 진수로 바꾸어 주는 함수로는 [ 교재 465]에 있는 LimBin2Dec.m 함수를 참고하기 바란다 .

• 이들 함수들과 다음에 배울 보수에 대한 내용은 디지털 system 의 기본적인 내용들이므로 여과없이 모두 익혀보기 바란다 .

• Computer 는 기본적으로 덧셈만 계산할 수 있는 것이 보통이다.

물론 , 직접 뺄셈 , 곱셈 , 나눗셈을 수행하도록 CPU Chip 을 설계할 수도 있지만 , 결국 , 뺄셈 , 곱셈 , 나눗셈 연산을 위한 CPU Chip 설계 내용을 살펴보면 모두 덧셈만을 사용하는 것을 알 수 있다 .

• 모든 임의의 함수들은 Maclaurin 급수를 통하여 뎃셈의 수식으로 표현할 수 있다 .

• 2 개의 주어진 수들에 대한 뺄셈은 “보수”를 사용하여 수행한다.

Page 106: Matlab Overview-임종수

2 진 연산 방법 .

• 일반적으로 computer 는 2 의 보수를 사용하여 뺄셈을 수행한다.

예를 들어서 M=1010100, N=1000100 을 2 의 보수를 사용하여 M-N 을 연산하는 방법을 살펴보자 .

• M=1010100, 즉 , 84 이고 , N=1000100, 즉 , 68 이다 . 그러므로 ,

M-N=16(0010000) 이 된다 .

• 입력으로 8bits M, N 을 준 경우 , 보통 , 출력도 8bits 가 나오도록 만든다 . 그러므로 , 10000 이라고 답하는 것보다 , 0010000 으로 답하는 것이 옳다 . 또한 , 맨 왼쪽 bit 가 현재 , “0”인데 , 맨 왼쪽 bit 를 MSB 라고 하며 , “0” 이면 , 양수 , “1” 이면 , 음수를 뜻한다 . 물론 , 맨 오른쪽에 있는 bit 는 LSB 라고 한다 .

Page 107: Matlab Overview-임종수

Course Objectives이번 Course 를 통하여 다음과 같은 내용을 배울 수 있다 .

1. 2 진 연산 방법 .2. 선형 대수학 .

Page 108: Matlab Overview-임종수

To be continued!