mat기초

33

Upload: kim-dong-hyun

Post on 08-Nov-2014

74 views

Category:

Documents


0 download

DESCRIPTION

matlab

TRANSCRIPT

Page 1: mat기초

1

Page 2: mat기초

2

차 례

제 1 장 MATLAB 연습 ------------------------------------------------------------ 6

1.1 MATLAB에서 사용되는 기호들 -----------------------------------------------

1.2 연산자(operators) --------------------------------------------------------------------1.3 MATLAB에서 기본적으로 사용하는 유용한 함수 및 명령어들 ------

1.4 데이터 입,출력 방법 --------------------------------------------------------------

1.5 명령어 흐름 제어 -------------------------------------------------------------------1.6 그래프 그리는 방법 ---------------------------------------------------------------

7

13

15

16

17

19

실습 1 -------------------------------------------------------------------------------------- 31

제 2 장 디지털 신호처리 기본 개념 ----------------------------------------- 34

2.1 디지털 신호 처리란? ------------------------------------------------------------

2.2 디지털 신호처리 사용 분야 ---------------------------------------------------

2.3 신호의 분류 ------------------------------------------------------------------------

2.4 디지털 시스템 ---------------------------------------------------------------------

2.5 샘플링 정리 ------------------------------------------------------------------------

2.6 Aliasing ------------------------------------------------------------------------------

2.7 양자화(quantization)와 A/D 변환기 -------------------------------------------

34

34

35

37

39

40

41

실습 2 -------------------------------------------------------------------------------------- 43

제 3 장 디지털 신호 표현 --------------------------------------------------------- 45

3.1 디지털 기본 신호 표현 --------------------------------------------------------- 45

3.1.1 단위 임펄스 신호 (Unit Impulse signal) --------------------------

3.1.2 단위 계단 신호 (Unit Step signal) ---------------------------------

3.1.3 실수 지수 신호 (Real exponential signal) ------------------------

3.1.4 복소 지수 신호 (Complex exponential signal) -------------------

3.1.5 랜덤 신호(Random signal) --------------------------------------------

45

47

48

49

50

3.2 임의 신호 발생기 -----------------------------------------------------------------

3.3 White Gaussian 잡음 발생기 ---------------------------------------------------

3.4 이산신호 연산을 위한 몇가지 편리한 함수들 ---------------------------

53

54

56

실습 3 ------------------------------------------------------------------------------------- 59

제 4 장 선형 시스템 ------------------------------------------------------------------ 67

4.1 이산 시스템(Discrete System) --------------------------------------------------

4.2 콘볼루션(Convolution) 과 상관(Correlation) --------------------------------

67

71

Page 3: mat기초

3

4.2.1 콘볼루션 ------------------------------------------------------------------

4.2.2 상관(Correlation) ---------------------------------------------------------

71

78

실습 4 ------------------------------------------------------------------------------------- 82

제 5 장 임펄스 응답과 선형 차분 방정식 --------------------------------- 86

5.1 임펄스 응답(Impulse Response) ------------------------------------------------

5.2 간단한 몇가지 임펄스 응답 예 -----------------------------------------------

5.3 선형 차분 방정식 -----------------------------------------------------------------

5.4 차분방정식을 통하여 주파수 응답을 구하는 방법 ---------------------

86

86

88

89

실습 5 ------------------------------------------------------------------------------------- 91

제 6 장 z-변환 (z-Transform) ------------------------------------------------------ 94

6.1 z-변환의 정의 ---------------------------------------------------------------------- 94

6.1.1 DTFT의 일반화에 의한 정의 ---------------------------------------

6.1.2 z-변환의 정의 -----------------------------------------------------------

6.1.3 전달함수에 의한 정의 ------------------------------------------------

94

96

97

6.2 극점과 영점 ------------------------------------------------------------------------

6.3 수렴영역 (Region of Convergence : ROC) ---------------------------------

6.4 안정도 판별 ------------------------------------------------------------------------

6.5 z-변환의 성질(property) ----------------------------------------------------------

6.6 역 Z-변환(Inverse Z-Transform) ------------------------------------------------

99

101

105

107

109

실습 6 ------------------------------------------------------------------------------------- 113

제 7 장 이산 푸리에 변환(Discrete Fourier Transform) -------------- 121

7.1 아날로그 주기 신호 --------------------------------------------------------------

7.2 아날로그 비주기 신호 -----------------------------------------------------------

7.3 이산시간 푸리에 변환(DTFT) -------------------------------------------------

7.4 이산 푸리에 변환(DFT) ---------------------------------------------------------

121

122

122

130

7.4.1 이산 푸리에 변환 정의 -----------------------------------------------

7.4.2 푸리에 분석의 중요성 ------------------------------------------------

130

133

7.5 고밀도(high-density) 스펙트럼과 고분해능(high-resolution) 스펙트럼

7.6 이산 푸리에 변환의 응용 ------------------------------------------------------

7.7 고속 푸리에 변환(Fast Fourier Transform : FFT) ------------------------

134

136

139

7.7.1 DIT 방식 ------------------------------------------------------------------ 139

Page 4: mat기초

4

실습 7 ------------------------------------------------------------------------------------- 144

제 8 장 디지털 필터 H/W 구조 ------------------------------------------------- 155

8.1 디지털 필터 시스템 구성을 위한 기본 소자 표현 ---------------------

8.2 FIR 필터 구조 ---------------------------------------------------------------------

155

156

8.2.1. 직접형(Direct Form) 구조 --------------------------------------------

8.2.2 전치형(Transpose Form) 구조 ---------------------------------------

8.2.3 직렬연결형(Cascade Form) 구조 ------------------------------------

157

157

158

8.3 IIR 필터구조 ----------------------------------------------------------------------- 159

8.3.1 직접형 I(Direct Form I) 구조 ---------------------------------------

8.3.2 직접형 II(Direct Form II) 또는 케노닉형(Canonic Form)구조

8.3.3 직렬연결형(Cascade Form) 구조 ------------------------------------

8.3.4 병렬형(Parallel Form) 구조 -------------------------------------------

159

160

161

162

실습 8 ------------------------------------------------------------------------------------- 164

제 9 장 FIR 필터 설계 -------------------------------------------------------------- 177

9.1 디지털 필터 설계 단계 ----------------------------------------------------------- 177

9.1.1 디지털 필터의 사양 결정 --------------------------------------------

9.1.2 FIR 필터나 IIR 필터의 결정 ----------------------------------------

178

180

9.2 FIR 필터 설계 --------------------------------------------------------------------- 181

9.2.1 주파수 샘플링법 --------------------------------------------------------

9.2.2 창 함수법 -----------------------------------------------------------------

9.2.3 등리플 필터를 위한 최적 근사화법 ------------------------------

181

183

187

실습 9 ------------------------------------------------------------------------------------- 190

제 10 장 IIR 필터 설계 ------------------------------------------------------------- 204

10.1 아날로그 필터 설계 ------------------------------------------------------------

10.2 아나로그 필터에서 디지털 필터로의 변환 방법 -----------------------

205

212

10.2.1 임펄스 불변 변환(impulse invariance transformation) --------

10.2.2 쌍일차 변환(bilinear transformation)법 ---------------------------

10.2.3 주파수 대역 변환 -----------------------------------------------------

212

214

215

실습 10 ----------------------------------------------------------------------------------- 217

제 11 장 적응 필터(Adaptive Filter) ------------------------------------------- 238

Page 5: mat기초

5

실습 11 ----------------------------------------------------------------------------------- 241

제 12 장 디지털 신호처리 응용 1 --------------------------------------------- 247

과제 1 ------------------------------------------------------------------------------------- 247

제 13 장 디지털 신호처리 응용 2 --------------------------------------------- 250

과제 2 ------------------------------------------------------------------------------------- 250

제 14 장 디지털 신호처리 응용 3 --------------------------------------------- 253

과제 3 ------------------------------------------------------------------------------------- 253

참고문헌 --------------------------------------------------------------------------------------- 258

Page 6: mat기초

6

제 1 장 MATLAB 연습

Mathworks사의 MATLAB은 디지털 신호처리에 있어서 매우 유용한 도구이다.

MATLAB은 기본적으로 MATLAB이라는 엔진과 다양한 분야의 유용한 함수들을 모아

놓은 Toolbox들로 구성되어 있다.

일반적으로 MATLAB은 시뮬레이션 도구로만 알려져 있어서 실제 시스템을 만드는

연구원들은 MATLAB보다는 직접 시스템을 구성하는데 사용하는 C나 C++을 더

선호하여 왔다. 그러나 최근에 와서는 시스템 개발을 이중으로 할 필요가 없도록, 즉

MATLAB 으로 실험 후 다시 C나 C++ 로 다시 코딩을 하거나, DSP 칩을 이용하기

위해 TMS320 계열 칩등의 코드로 역시 다시 코딩해야하는 번거로움을 없애기

위하여 Mathworks 사에서 시스템 개발을 위한 솔루션을 제공함으로써 MATLAB은

시뮬레이션 도구라는 인식을 바꿔 놓았다.

그 솔루션들을 적어보면 다음과 같다.

1. C나 C++ 코드 생성

2. TI 사의 TMS320C6000이나 Motolora 사의 M6800의 코드 생성

3. Xilinx나 ALTERA등과 같은 EPLD(FPGA) 칩 제작을 위한 HDL 코드 생성

4. x-PC를 이용하여 MABLAB 코드로 직접 개발 보드의 Emulation 등

또한 함수 블록들로 시스템을 구성하여 실험할 수 있는 ‘Simulink’나 최근 많은

관심을 받고 있는 ‘Labview’와의 연계는 MATLAB이 디지털 신호처리 시스템 개발에

매우 중요한 도구로서 광범위하게 사용될 수 있음을 보여주고 있다.

본 장에서는 디지털 신호처리를 시작하기 전에 기본적으로 습득하고 있어야 할

MATLAB 명령어 사용법에 대하여 정리하여 놓았다.

MATLAB의 많은 명령어 및 함수들 중에서 많이 사용되고, 디지털 신호처리를

공부하는 데 있어서 반드시 알아야만 하는 것만을 정리하였으므로 보다 상세한

내용은 MATLAB 관련 책자를 참고하기 바란다.

MATLAB 참고자료

1. Steven W. Smith, "The Scientist and Engineer's Guide to Digital Signal Processing"

2. Vinay K. Ingle, John G. Proakis, "Digital Signal Processing using the MATLAB"

3.

Page 7: mat기초

7

1.1 MATLAB에서 사용되는 기호들

■ 일반기호

표. 1-1 특수값

기호 설 명

'벡터나 행렬(matrix)의 전치(transpose)를 나타낸다.예) a' , A'

' '문자열을 나타낸다.예) title('Magnitude')

[ ]벡터나 행렬, 다항식을 나타낸다.예) a=[1 3 5 7]

( )벡터나 행렬, 다항식의 원소들을 나타내거나 함수(function)의 변수들을

나타낸다.예) a(1,2), max(a)

;행의 끝을 나타내거나 수식 끝에서 사용 시에는 결과를 화면에 출력하

는 것을 방지한다.예) a=sqrt(2)+exp(3);

:벡터를 만든다.예) t=[0:0.01:1];

.벡터나 행의 원소끼리 계산할 때 쓰인다.예) c=a.^2 , c=a./b

% 주석문(comment line)을 쓰고자 할 때 사용된다.

■ 수식기호

수식기호는 일반적으로 사용되는 수식 기호를 그대로 사용한다. 단 벡터의

원소끼리 계산할 때에는 ‘.’이 특별히 사용된다.

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

Page 8: mat기초

8

■ 특수값

표. 1-2 특수값

특수값 각각의 특수 값에 대한 설명

pi 3.1415926535897...

i 와 j 허수의 단위(즉, ), 그러므로, 가능하면, i와 j는 변수로 취하지 않는 것

이 좋다.

inf 무한대(infinity)를 반환한다. ⇒ (임의의 nonzeros 수치) / 0

NaN 수가 아님(Not-a-number)을 나타낸다. ⇒ 0 / 0 또는 inf / inf

■ 벡터 표현 및 행렬 연산

1) 벡터 표현

>>A=[1 4 8 6] % 열 벡터

A = 1 4 8 6

>>A=[1; 4; 8; 6;] % 행 벡터

A = 1 4 8 6

>>a=[1:4:1] % 1부터 4까지 1간격으로 열 벡터 생성

a = 1 2 3 4>>a=[9:-2:1] % 9부터 1까지 -2간격으로 열 벡터 생성

a = 9 7 5 3 1

Page 9: mat기초

9

2) 행렬 표현

행렬

일때

>>A=[1 1 1;1 2 3;1 3 6] % 행 벡터로 입력

% 원소들을 공란이나 ‘,’로 분리한다.

>>A=A = 1 1 1 1 2 3 1 3 6

3) 벡터와 행렬 계산

>> a=[1 2 3]; b=[4 5 6];>> c= a.* bc = 4 10 18

>> a=[1 -2 -3 6]; b=[-4 5 -6 2];>> y=a.^2 + b.^2 - a + by = 12 36 42 36

>>A=[1 1 1;1 2 3;1 3 6];>>sum(A) % sum(A) 를 하면 결과는 각각의 열을 더한 결과가 행 벡터 형태로 나온다.ans = 3 6 10

4) 행렬을 구성하는 원소들의 참조 방법

>> x=[-1 sqrt(3) 4/5]x = -1.0000 1.7321 0.8000

Page 10: mat기초

10

>>x(3) ↲ans = 0.8000

>> a=[1 2 3; 4 5 6; 7 8 9]a = 1 2 3 4 5 6 7 8 9

>> a(1,3)ans = 3>> a(2,2)ans = 5>> a(3,2)ans = 8

>> a(1,:) % 1번째 행 전체 원소들

ans =

1 2 3

>> a(:,2) % 2번째 열 전체 원소들

ans =

2 5 8

>> a(3,2:3) % 3번째 행의 2,3번째 열 원소

ans = 8 9

일때, 'x' 개개의 성분을 얻으려면 '( )' 안에 해당 원소의 위치(subscript)를 넣어 주면

된다.

Page 11: mat기초

11

>> a(2:3,2) % 2번째 열의 2,3번째 행 원소

ans = 5 8

>> P=[1, 2, 4, 6, 8]+[pi, 4, exp(1), 0, -1]+... [cos(0.1*pi), sin(pi/3), tan(3), atan(2), sqrt(pi)]

P = 5.0926 6.8660 6.5757 7.1071 8.7725

>> a=[1 2 3 4 5; 2 4 6 8 10; 3 6 9 12 15]a = 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15

>> a(1,3)=22.999 % 1번째 행 3번째 열 원소를 -22.999로 치환

a = 1.0000 2.0000 22.9990 4.0000 5.0000 2.0000 4.0000 6.0000 8.0000 10.0000 3.0000 6.0000 9.0000 12.0000 15.0000

>> a(2,6)=-88.999 % 2번째 행 6번째 열 원소를 -88.999로 치환

% 6번째 열이 없으므로 6번째 열을 만들어 값을 치환한다.a = 1.0000 2.0000 22.9990 4.0000 5.0000 0 2.0000 4.0000 6.0000 8.0000 10.0000 -88.9990 3.0000 6.0000 9.0000 12.0000 15.0000 0

>> a(3,5)=-55 % 3번째 행 5번째 열 원소를 -55로 치환

a = 1.0000 2.0000 22.9990 4.0000 5.0000 0

행렬을 정의함에 있어서 긴 수식이나 기재사항을 포함하여 긴 명령이 두 개의 라인

이상으로 분리될 경우, 각 라인의 끝에 ‘...’을 써넣음으로서 계속 연결됨을 표시한다.

5) 행렬의 원소값 치환

Page 12: mat기초

12

>>z=[1+2i 3+4i] ↲z = 1.0000 + 2.0000i 3.0000 + 4.0000i

>>z' ↲ans = 1.0000 - 2.0000i 3.0000 - 4.0000i

>>z.' ↲ans = 1.0000 + 2.0000i 3.0000 + 4.0000i

2.0000 4.0000 6.0000 8.0000 10.0000 -88.9990 3.0000 6.0000 9.0000 12.0000 -55.0000 0

>> b=2*a % a 행렬에 2를 곱해서 다른 행렬로 저장

b = 2.0000 4.0000 45.9980 8.0000 10.0000 0 4.0000 8.0000 12.0000 16.0000 20.0000 -177.9980 6.0000 12.0000 18.0000 24.0000 -110.0000 0

6) 행렬의 전치(transpose : i×j행렬을 j×i행렬로 바꾸는 연산자)

◦복소 벡터나 행렬 x의 " z' "은 복소 공액(complex conjugate) 전치를 나타낸다. ◦복소 벡터나 행렬 x의 " z.' "은 일반적인 행렬의 전치를 나타낸다.

" . (dot) "가 있느냐 없느냐에 따라 결과가 달라진다.

Page 13: mat기초

13

>>A=[3 9 5];>>B=[2 1 5];>>C=A./B.^2 ↲ % B.^2을 계산하고 이어서, A./을 계산한다.C = 0.7500 9.0000 0.2000

1.2 연산자(operators)

1) 산술 연산자(Arithmetic Operators)

산술 연산자 내에서의 연산 우선 순위

1. transpose( " .' " ), power ( " .^ " ), 복소 공액 transpose( " ' " ), 행렬의 power( " ^ " )2. unary plus( " + " ), unary minus( " - " )3. 곱셈( " * " ), 오른쪽 나눗셈( " . / " ), 왼쪽 나눗셈( " . \ " ), 행렬의 곱( " *

" ), 행렬의 오른쪽 나눗셈( " / " ), 행렬의 왼쪽 나눗셈( " \ " )4. 덧셈( " + " ), 뺄셈( " - " )5. colon 연산자( " : " )

2) 관계 연산자(Relational operators)

배열을 구성하는 각각의 원소에 대한 “작다(less), 같지 않다(not equal to)" 등을 비

교하는데 이용한다.

표. 1-3 관계 연산자들

관계 연산자의 종류 해당 연산자에 대한 설명

< "보다 적다(Less than)"

<= "적거나 같다(Less than or equal to)"

> "보다 크다(Greater than)"

>= "크거나 같다(Greater than or equal to)"

== "같다(Equal to)"

~= "같지 않다(Not equal to)"

Page 14: mat기초

14

>>A=[2 7 6;9 0 -1;3 .5 6]; % MATLAB에서 소숫점 앞의 “0”은 무시한다. % 즉, “0.123”과 “.123”은 같은 뜻이다.>>B=[8 0.2 0;-3 2 5;4 -1 7]; ↲>>C= A<B ↲C = 1 0 0 0 1 1 1 0 1

행렬 A와 B를 비교하여, A의 원소 중 B의 원소보다 더 작은 것은 “참(TRUE)”이므로 해당

위치에 “1”을 넣고, 그렇지 않은 곳(거짓:FALSE)에는 “0”을 넣는다.

결국, 행렬 A의 원소 중에서 어느 원소가 행렬 B의 원소보다 더 작은 지 해당 위치를 알 수

있다.

" find " 함수는 주어진 조건에 맞는 배열의 원소 위치를 알려 준다.만일, 주어진 배열이 벡터이면 출력 변수는 한 개로 하다. 또한, 주어진 배열이 행렬

이고, 출력 변수를 하나로 설정하면, " find " 함수는 주어진 행렬을 “열 벡터”로 변환

한 뒤, 해당 원소의 위치를 반환한다.

>>A=magic(4) % magic 행렬은 어느 방향으로 더하던지 그 합이 같은 행렬이다. A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1>>index=find(A > 8); >>A(index)=100 A = 100 2 3 100 5 100 100 8 100 7 6 100 4 100 100 1

Page 15: mat기초

15

3) 논리 연산자(Logical Operators)

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

표. 1-4 논리 연산자의 종류

논리 연산자의 종류 해당 연산자의 설명

& AND

| OR

~ NOT

1.3 MATLAB에서 기본적으로 사용하는 유용한 함수 및 명령어들

■ 유용한 함수들

sin(x) / cos(x) / tan(x) / asin(x) / acos(x) / atan(x) / exp(x) / log(x) / log10(x) / sqrt(x) / abs(x) / phase(x) / real(x) / imag(x) / conj(x) / mean(x) / std(x) / sum(x) /max(x) / min(x) / ceil(x) / floor(x) / round(x) / rem(x,y) / fix(x) / length(x) /

size(x) / ones(rn,cn) / zeros(rn,cn) / eye(rn,cn) / linspace(sn,incn,en) / pi(=3.14159....)

■ 복소수 표현 방법

x=3+3j or x=3+3i or x=3+3*j or x=3+3*i

■ 유용한 명령어들

clear all;close all;clc;disp('DSP') ⇒ 단순히 스크린에 문자열을 표현한다.

Page 16: mat기초

16

1.4 데이터 입,출력 방법

1) load와 save 명령

MATLAB에서 사용하는 파일 입,출력 함수는 save.m, load.m 함수이다.

save.m함수는 주어진 데이터를 *.mat file로 저장하고,

load.m 함수는 *.mat file로부터 데이터를 읽어낸다.

>> x=eye(3); y='DSP'; z=2+2i;

>> save Data_file x y z

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

저장된다.

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

>>load Data_file

위와 같이 명령하면, Data_file.mat file에 저장되어 있는 x, y, z데이터를 base

workspace로 불러낸다.

>> save output_filename variables (xxx.mat 파일 형식으로 저장)>> load data_filename.mat

ASCII 파일로 저장하고, 읽고자 한다면

>> save output_filename.dat variables -ascii(또는 /ascii : ascii 파일 형식으로 저

장)>> load data_filename.txt

와 같이 명령을 쓰면 된다.

2) Low_level file I/O 함수들

fopen.m 과 fclose.m함수를 이용하여 파일을 열고 닫는다.

Page 17: mat기초

17

fprintf.m 과 fscanf.m 함수를 이용하여 데이터 파일을 읽고, 쓸 수 있다.

3) input 명령

‘input’ 명령을 이용하여 스크린상에서 직접 데이터를 받아들일 수 있다.

>> a=input('값을 입력하시오 a= ')값을 입력하시오 a= 6a = 6>> x=a+a.^2;>> xx = 42

1.5 명령어 흐름 제어

1) FOR 문

for i = 1:10

명령어 문장들;

end

x=0;for i = 1:10 x=x+i;endx

x = 55

2) IF 문

if (조건식)

명령어 문장들;

elseif

명령어 문장들;

Page 18: mat기초

18

x=0; y=0; z=0;for k=0:1:100;if (2*round(k/2)==k)

x=x+1;elseif (3*round(k/3)==k)

y=y+1;else

z=z+1;endendxyz

x = 51y = 17z = 33

else

명령어 문장들;

end

3) WHILE 문

while (조건식) % 조건식이 거짓일 때까지 아래 명령들을

수행한다.

명령어 문장들;

end

n=1;while (prod(1:n)<1000) n=n+1;endn

n = 7

Page 19: mat기초

19

x=input('값을 입력하시오 x=')y=rem(x,2);switch ycase 1, disp('입력한 값은 홀수')case 2, disp('입력한 값은 짝수') end

값을 입력하시오 x=45x = 45입력한 값은 홀수

4) SWITCH 문

switch 변수 또는 식

case 값1, % 변수나 식이 ‘값1’인 경우

명령어 문장들;

case 값2, % 변수나 식이 ‘값2’인 경우

명령어 문장들;

.....

otherwise % 변수나 식이 어떠한 case의 값도 아닌 경우

명령어 문장들;

end

1.6 그래프 그리는 방법

다음 그림은 MATLAB을 이용하여 그린 그래픽 예이다

Page 20: mat기초

20

>> t=[0:0.1:2*pi];>> y=sin(t);>> plot(t,y)

MATLAB에는 다양한 그래프를 그릴 수 있는 함수가 있다. 그중 "plot" 과 “stem" 함수 사용법을 정확히 알면 매우 유용하게 사용할 수 있다.

■ PLOT

1) 한 개의 그래프 그리기

Page 21: mat기초

21

Page 22: mat기초

22

2) 동시에 여러 그래프 그리기

>> t=[0:0.1:2*pi];>> y=sin(t);>> z=cos(t);>> plot(t,y,t,z)

3) hold 명령을 이용하는 방법

하나의 그래프를 그린 후 거기에 겹쳐서 다른 그래프들을 그리기 위해서는

>> hold on

명령을 사용하며, hold on 명령을 해제하기 위해서는

>> hold off

명령을 사용한다.

Page 23: mat기초

23

>> n=[0:0.2:2*pi];>> y=sin(n);>> stem(n,y) >> stem(n,y,'filled')

>> x=0:.1:2*pi;>> y=sin(x);>> plot(x,y)>> grid on>> hold on>> plot(x,exp(-2*x),'r:*')

■ STEM

Page 24: mat기초

24

>> subplot(2,2,1), plot(1:10)>> x = 0:.1:2*pi;>> subplot(2,2,2), plot(x,sin(x))>> subplot(2,2,3), plot(x,exp(-x),'r')>> subplot(2,2,4), plot(x+sin(x)+exp(-x),'k')

■ log 단위 그래프

를 x축, y축 각각에 대한 log 단위로 그래프를 그리면, 다음

과 같이 세 가지로 나타낼 수 있다.

>>w=logspace(-2,2,1000);>>H=1./(1+w.^2).^0.5;>>subplot(1,3,1),semilogx(w,H);>>subplot(1,3,2),semilogy(w,H);>>subplot(1,3,3),loglog(w,H);

■ 한 그림 창에 여러 개의 그래프를 분할하여 그리는 방법

한 그림 창에 여러 개의 그래프를 분할하여 그리기 위해서는

‘subplot(행 수,열 수,그래프 번호)’

명령을 사용한다.

Page 25: mat기초

25

>> x = 0:.1:2*pi;>> plot(x,sin(x),'r--d')

■ 그래프 선의 색이나 심볼 지정

그래프 선의 색이나 심볼을 특별히 다른 것으로 사용하고자 할 경우에는 다음 명령에

서 원하는 'option'을 지정한다.

>> plot(x,y,'option')

Page 26: mat기초

26

option 기호

그래프 선의

색option 기호

그래프상의

심볼

option 기호

선의

종류

b blue . point - solid

g green o circle : dotted

r red x x-mark -. dashdot

c cyan + plus -- dashed

m magenta * star

y yellow s square

k black d diamond

v triangle (down)

^ triangle(up)

< triangle(left)

>

triangle(right)

p pentagram

h hexagram

표. 1-5 그래프 그리기에서의 다양한 ‘option’ 들

Page 27: mat기초

27

■ 그래프 안에 표제 및 문자 삽입

>> x = 0:.1:2*pi;>> plot(x,sin(x),'r--d');>> xlabel('Frequency(w)');>> ylabel('Amplitude[V]');>> title('SIN function');

■ 특수문자 표현

1) 윗첨자와 아래첨자

>> xlabel('^ {super } and _ {sub }')

2) 굵은 문자 기울어진 문자

>> ylabel('Some \bfboldface\rm and some \it {italics }')

3) 그리스문자

>> text(3.5, 20, 'y = e^ { \alphax}sin( \betax)')

Page 28: mat기초

28

표. 1-6. 그리스 문자 표

Page 29: mat기초

29

■ Property Editor를 이용한 그래프 수정

1) Figure Property

2) Axes Property

Page 30: mat기초

30

■ 다양한 그래프 예

Page 31: mat기초

31

실습 1

본 실습에서는 기본적인 MATLAB 함수들을 다루는 방법을 문제를 통해 습득한다 .

1. 실습 제목

• MATLAB 기본 명령 및 함수 사용법

2. 실습 목적

• 기본적인 MATLAB 명령 사용법 연습

• 기본적인 MATLAB 함수 사용법 연습

• MATLAB 함수를 이용한 그림 만들기 사용법 연습

• MATLAB 함수를 이용한 데이터 읽기,쓰기 방법 연습

3. 실습 절차

(1) 주어진 문제에 대한 MATLAB 코드를 “meditor”등을 사용하여 작성한다.

(2) MATLAB을 수행하여 결과를 구한다.

(3) 문제에서 지시한대로 결과를 구하여 보고서를 작성한다.

Page 32: mat기초

32

[문제 1] 일 때 과 의 그래프를 하나

의 창에 그리시오. 이때 은 빨간색 실선으로, 는 파란색 점선으로 그리시오.

[문제 2] 일 때 sin 과 cos의 그래프를

하나의 창에 그리시오. 이때 y1은 빨간색 실선으로 y2는 파란색 점선으로 그리시오.

Page 33: mat기초

33

[문제 3] 일 때 sin 과 cos의 데이터를

save 명령을 사용하여 ASCII 코드 형태로 각각 저장 하시오. 그리고 load 명령을 사용

하여 다른 변수로 그 데이터를 읽어 들인 후, 하나의 창에 저장 전 데이터와 읽어 들

인 데이터를 같이 그리시오. 이때 저장 전 데이터들은 "o" 표시 선으로 그리시오.

[문제 4] "input" 명령을 사용하여 임의 실수값 a,b,c,d,e를 받아들여서

a) b) log c) 표준편차 d) 평균 e) 합

을 구하는 MATLAB 코드를 작성하시오. 그리고 결과를 구하시오.