MATLAB Workshopcfs1.tistory.com/upload_control/download.blog?f... · 1 1교시 : matlab의 소개...

20
[ABEEK] [NURI] MATLAB Workshop : 공학문제 해결을 위한 MATLAB 기초사용법 2006. 12. 20 (수) 18:00 ~ 20:00 E5-315, 316 경북대학교 전자전기컴퓨터학부

Transcript of MATLAB Workshopcfs1.tistory.com/upload_control/download.blog?f... · 1 1교시 : matlab의 소개...

[ABEEK] [NURI]

MATLAB Workshop: 공학문제 해결을 위한 MATLAB 기초사용법

2006. 12. 20 (수) 18:00 ~ 20:00

E5-315, 316

경북대학교 전자전기컴퓨터학부

연 수 계 획 서 연수명 MATLAB Workshop 강사명 임채현, 김짐, 김태환, 조광현

강의시간 2006년 12월 20일 오후 6:00 ~ 8:00 강의실명 E5-315, 316

강의개요 및 목적

MATLAB를 이용하여 신호처리, 제어공학, 통신공학 등의 공학적 문제해결에 도움을 주기 위한 computer

simulation 방법(도구) 제공.

교재 및 참고문헌

Textbook : 강의자료(Home made)

References :

[1] Brian D.Hahn, “Essential MATLAB for Scientists and Engineers 2nd Ed”, Butterworth Heinemann,

2003

[2] Vinay K. Ingle, “John G. Proakis, Digital Signal Processing using MATLAB”, Sthomson Learning, 1998

[3] 황우현, 장순철, “MATLAB 활용”, 높이깊이,1994

강의진행방법 및 활용매체

빔 프로젝터를 이용해서 직접 MATLAB 상에서 강의, 실습용 PC를 이용해서 직접 배운 내용을 실습

연수전용게시판 활용(http://matlabclass.knu.ac.kr), MATLAB 설치된 PC 에서 실습

과제 및 평가방법

강의 종료 후 조별 과제가 주어질 예정임, 조당 인원은 4명씩으로 편성

수강에 특별히 참고하여야 할 사항

C 또는 C++를 수강한 학생일 경우 이해가 쉬움.

번호 연수 시간표 과제 및 연구문제 교재 및 참고자료 비고

1 1교시 : MATLAB의 소개 및 툴 사용법 강의자료의 예제 강의자료

2 2교시 : 기본적인 MATLAB 명령어 및 함수 강의자료의 예제 강의자료

3 3교시 : 예제를 바탕으로 한 MATLAB 활용 강의자료의 예제 강의자료

강의, 데모, 실습

4 후속과제 : 조별과제 수행 강의자료의 예제 강의자료 과제

연수를 통한 학습성과

학습성과 학습성과 달성을 위한 교과목 내용

1 수학, 기초과학, 공학지식과 이론을 응용할 수 있는

능력

MATLAB 기본사용법 익히기, 주어진 문제를

의사코드로 표현

2 복합학제적 팀의 한 구성원 및 리더로서 역할을 해

낼 수 있는 능력 주어진 팀 단위 과제를 역할을 분담하여 해결

3 공학 실무에 필요한 기술, 방법, 최신 공학 도구를

사용할 수 있는 능력

MATLAB 기본 사용법 익히기, 문제해결 시

MATLAB을 이용하여 해결하고 결과를 제시

MATLAB Tutorial

- 1 -

차 례- -의 소개1. MATLAB의 개요1.1 MATLAB의 실행1.2 MATLAB

도구 상자에 대한 소개1.3

기본적인 사용법2. MATLAB기본적인 명령어2.1행렬 및 벡터의 연산2.2제어문2.3 ( for , while , if , else , elseif )공학도에게 유용한 함수들의 사용2.4대수 방정식 풀이 및 라플라스 변환2.5

형성2.6 M-File

예제 및 실습3.그리기3.1 Graph만들기3.2 M-File

MATLAB Tutorial

- 2 -

의 소개1. MATLAB의 개요1.1 MATLAB이란MATLAB ?◇

"MATrix LAB 를 뜻하는 말로 수치 해석 행렬 연산 신호 처리 및 간편한oratory" , , ,그래픽 기능 등을 통합하여 고성능의 수치 계산 및 결과를 제공해 주는 프로그램이다.기본적으로 행렬 또는 벡터를 사용하여 기능을 수행하는 계산 환경을 제공한다.

의 특징MATLAB◇

가장 큰 특징은 파일을 사용함으로써 특정한 해를 구하는데 필요한 응용 프로그램M-들을 손쉽게 작성할 수 있다는 점이다 기본적인 내부 명령들뿐만 아니라 다른 파일. M-들도 불러서 사용할 수 있으며 필요한 경우 사용자가 직접 파일을 작성하여 사용할, M-수 있겠다 파일을 작성하는 과정은 뒤에서 다시 설명하겠다. M- .

의 실행1.2 MATLAB에서 실행Windows◇

바탕화면에서 왼쪽 아이콘을 더블 클릭하면 상에서Windows

을 실행 할 수 있게 된다MATLAB .

더블 클릭하여 실행된 초기화면은 아래와 같다MATLAB .

그림 초기화면[ 1. MATLAB ]

MATLAB Tutorial

- 3 -

도구 상자에 대한 소개1.3창 소개(1) (Window)

[Current Directory/Workspace]현재 자신이 사용하고 있는 디렉토리나 변수들을

나타내는 창

- Current Directory디렉토리 내의 파일 및 폴더를 나타냄:- Workspace자신이 사용한 변수들의 이름과 값들을 나타냄:

[Command History]에서 자신이 사용했던 함수 혹은 변수Command Window

들이 기록되는 창

[Command Window]사용자가 변수나 함수를 입력하여 결과를 볼 수 있는 창

사용자는 이 곳에 사용하고자 하는 변수와 그 값을 입력:하거나 함수를 사용하여 창에서 결과를 바로 볼 수 있다.

풀 다운 메뉴(2) - (pull-down)에서는 아래 그림과 같이 가지의 풀 다운 메뉴가 있다MATLAB 6 - .

그림 풀 다운 메뉴[ 2. MATLAB - ]

파일 생성 오픈 저장 및 인쇄에 관한 사항과 경로 설정 종료) File : , , , MATLABㄱ

를 위해 사용

파일을 찾기 복사 붙이기를 위해 사용) Edit : , ,ㄴ

프로그램의 오류를 잡거나 수정할 때 사용) Debug :ㄷ

기본적인 을 설정할 때 사용) Desktop : MATLAB Layoutㄹ

에서 창을 지정하는데 사용) Window : MATLABㅁ

의 기본적인 도움말 및 데모를 제공) Help : MATLABㅂ

MATLAB Tutorial

- 4 -

기본적인 사용법2. MATLAB모든 변수 및 함수 명령어 의 사용은 를 통해 입력하고 그 결과를 바로( ) Command Window볼 수 있다 다른 방법으로는 를 이용해서 사용하고자 하는 변수. [File]-[New]-[M-File]-[Editor]와 함수를 에 입력하여 실행함으로써 결과를 얻을 수 있다Editor .

기본적인 명령어2.1명령어 사용법 설명

cd cd EX 라는 디렉토리로 이동EXcd .. 현재 디렉토리의 상위 디렉토리로 이동

clc clc 의 창을 지움command windowclear clear A 라는 변수를 삭제A

clear all 사용한 모든 변수를 삭제

close close 활성화된 하나의 를 닫음figure windowclose all 활성화된 모든 를 닫음figure window

help 명령어help 명령어의 내용을 보고자 할 때 사용

load 변수명 파일명load / 변수 파일을 할 때 사용/ loadpath path(path,‘e:\EX’) 디렉토리 내의 파일을 사용할 수 있게 해 줌EX Mpwd pwd 현재 디렉토리명을 보여줌

save 변수명 파일명save / 변수 파일을 할 때 사용/ savewho who 현재 사용하고 있는 변수를 보여줌

whos whos 현재 사용하고 있는 변수뿐 만 아니라 까지 보여줌size

수의 표현2.2상에서는 기본적으로 수가 형 이며 화면상에 표현될 때는 자MATLAB double (8bytes) , 5

리까지 수만 보여준다 또한 실수뿐 만 아니라 허수까지 표현할 수 있으며 소(SHORT) . ,수점 자리의 표현형식을 바꾸어 수를 표현할 수도 있다.

여러 가지 수의 표현(1)

>> a=234.56

a =

234.5600

>> a = 1.234e10

a =

1.2340e+010

>> a = 2 + 3j

a =

2.0000 + 3.0000i

>> a = 3 * pi

a =

9.4248

>> a = 123.4567890

a =

123.4568

>> format long

>> a

a =

1.234567890000000e+002

MATLAB Tutorial

- 5 -

수의 표현형식(2)FORMAT 기본적으로 형태와 같다SHORTFORMAT SHORT 자리의 고정소수점 형태로 보여줌5FORMAT LONG 자리의 고정소수점 형태로 보여줌15FORMAT SHORT E 자리의 부동소수점 형태로 보여줌5 .FORMAT LONG E 자리의 부동소수점 형태로 보여줌15

행렬 및 벡터의 연산2.3행렬은 의 기본 자료 형식이며 상에서 주로 차원적으로 표현된다MATLAB , MATLAB 2 .

행렬의 형성 및 전치행렬 변환(1)>> A=[1 2 3; 4 5 6; 7 8 9]

A =

1 2 3

4 5 6

7 8 9

>> A'

A' =

1 4 7

2 5 8

3 6 9

세미콜론; ( )프라임' ( )

행을 바꿀 때 사용

행렬의 전치 행렬을 표시하고자 할 때 사용

행 벡터 생성(2)

>> A=[0 : 0.5 : 3]

A=

0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000

변수 초기값 증가분 최종값= [ : : ]위와 같은 형태로 사용하며 증가분을 설정하지 않고 변수 초기값 최종값= [ : ]형태로 쓸 경우 증가분은 로 로 설정되게 된다default 1 .

다음을 실행시켜 결과가 어떻게 되는지 알아보자ex] .A = [1 2 3 4 5];

A = [3:1:1];

A = [1:3]; B = [ A 4 5 6];

MATLAB Tutorial

- 6 -

행렬의 참조 콜론 연산자(3) ( :( ) )

>> A=[1 2 3;

4 5 6;

7 8 9];

위의 행렬을 만들고 아래의 명령어들이 어떤 결과를 보이는지 알아보자ex] A

A(: , :)

A(:)

A(: , 2)

A(3 , :)

A(1:2 , 2:3)

A(1:2:3 , 1:1:2)

사칙연산(4)상에서는 행렬 또는 벡터를 사용하는 계산 환경을 제공하므로 행렬 또는MATLAB ,

벡터를 만들어 사칙연산을 할 경우 사용자는 반드시 각 행렬 또는 벡터의 차원을 고려

하여야 한다.행렬의 덧셈 및 뺄셈)ㄱ

행렬의 덧셈 및 뺄셈에는 숫자의 덧셈 및 뺄셈과 마찬가지로 와 기호를 사‘+’ ‘-’용하며 연산의 대상이 되는 두 행렬의 차원이 같아야 한다 행렬의 덧셈과 뺄셈은, .각 행렬의 같은 위치 즉 행렬 상의 가 같은 원소끼리 이루어진다, index .

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

>> B = [2 4 6 ; 1 3 5];

>> C = A + B

C =

3 6 9

5 8 11

행렬의 곱셈)ㄴ행렬의 곱셈은 를 사용하여 표시하며 연산의 대상이 되는 두 행렬 또는 벡터의 내‘*’ ,부 차원이 일치할 경우에만 정의된다.

>> x = [1 2 3];

>> y = [3 4 5];

>> x * y'

ans =

26

>> A = [1 3 5; 2 4 6; 0 1 -1];

>> A * x'

ans =

22

28

-1

MATLAB Tutorial

- 7 -

행렬의 나눗셈)ㄷ행렬의 나눗셈은 좌측 나누기와 우측 나누기의 결과가 일치하지 않는다. MATLAB에서는 이 두 가지 경우에 대한 나눗셈을 각각 와 의 기호로 정의해 놓았다‘ ’ ‘/ ’ .∖

의 해 좌측 나누기A * X = B : X = A B -∖의 해 우측 나누기X * A = B : X = B / A -

>> 4\2

ans =

0.5000

>> 4/2

ans =

2

행렬의 거듭제곱)ㄹ정방 행렬 와 스칼라 양 에 대하여 는 의 거듭제곱 즉 를 번A p ‘ A ^ p ' A p , A p곱한 것을 의미한다 가 정방행렬이 행렬 자신을 두 번 곱하는 것이므로 차원이. A A맞지 않으므로 에러메시지를 보일 것이다.

>> A = [1 1 1; 1 1 1];

>> A ^ 2

??? Error using ==> mpower

Matrix must be square

>> B = [ A ; 1 1 1];

>> B ^ 2

ans =

1 1 1

1 1 1

1 1 1

연산자(5) .(Dot)

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

>> A .* B

ans =

3 4 3

>> A * B

??? Error using ==> mtimes

Inner matrix dimensions must agree

>> A .^ 2

ans =

1 4 9

A .* B①

각 배열의 곱:A * B②

행렬 자체의 곱 차원이 맞지: .않으므로 에러메시지가 나타남

A .^ 2③

배열에서 각 원소의 제곱:A ^2④

행렬 자체의 제곱 차원이 맞지: .않으므로 에러메시지 나타남

행렬 혹은 벡터 에서 각 원소의 곱이나 나누기 혹은 지수승을 할 경우 반드시( )※

사용하고자 하는 연산자 앞에 닷 을 붙여야 한다.( ) .

MATLAB Tutorial

- 8 -

>> x = [1 1+j];

>> x '

ans =

1.0000

1.0000 - 1.0000i

>> x . '

ans =

1.0000

1.0000 + 1.0000i

복소수를 포함하는 행렬에서의 전치행렬의 경우 닷 연산자를 포함하지 않고(.)※

전치행렬을 구하면 복소수가 켤레 복소수가 되어서 전치행렬로 나타나지만 닷,연산자를 붙일 경우는 그대로 전치행렬이 됨을 볼 수 있다.

행렬을 위한 유용한 함수들(6)함수 기능

zeros(n) 으로 구성된 행렬을 만들어줌0 n×nzeros(n,m) 으로 구성된 행렬을 만들어줌0 n×mones(n) 로 구성된 행렬을 만들어줌1 n×nones(n,m) 로 구성된 행렬을 만들어줌1 n×meye(n) 의 단위행렬을 만들어줌n×neye(n,m) 의 단위행렬을 만들어줌n×mlength(arr) 배열의 가장 긴 차원을 나타내어 줌

size(arr) 배열의 행과 열의 수로 사이즈를 표시해 줌

>> zeros(2)

ans =

0 0

0 0

>> zeros(1,2)

ans =

0 0

>> ones(2)

ans =

1 1

1 1

>> zeros(1,2)

ans =

1 1

>> eye(2)

ans =

1 0

0 1

>> zeros(1,2)

ans =

1 0

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

ans =

1 2 3 4 5

6 7 8 9 0

>>length(A)

ans =

5

>> size (A)

ans =

2 5

MATLAB Tutorial

- 9 -

제어문2.3 ( for , while , if , else , elseif )제어문 의 범위를 끝마치는 명령으로 모두 를 사( for , while , if , else , elseif ) end용하며 항상 쌍을 이루어서 써야한다, .

문 특정한 수만큼 루프를 반복 수행할 수 있게 한다(1) for : .변수 식for =문장 1. . .문장 n

end

까지의 수의 합을 구해보자ex] 1~20sum = 0;for i = 0 : 20

sum = sum + 1;end

문 조건이 참인 동안 루프를 반복 수행할 수 있게 한다(2) while : .

식while문장 1. . .문장 n

end

까지의 수의 합을 구해보자ex] 1~20i = 0; sum = 0;while i =<19

i = i + 1 ;sum = sum + i ;

end

문 조건적으로 문장을 수행하는 명령이다(3) if : .문 문이 한 문장을 수행할 것인지 아닌지를 선택할 수 있도록 해준다(4) else : if .문 두 가지 이상의 많은 작동들 중에서 선택할 수 있게 해주는 명령이다(5) elseif : .

식if문장 1. . .문장 n

end

식if문장 1

else문장 2

end

식if문장 1

elseif문장 2

end

입력받은 수가 짝수인지 홀수인지 판별하는 프로그램을 작성해보자ex]

n = input('Enter your number:');if n < 0disp (‘This number is a negative number');

elseif rem (n,2) == 0disp ('This number is an even number');

elsedisp ('This number is an odd number');

MATLAB Tutorial

- 10 -

공학도에게 유용한 함수들의 사용2.4

삼각 함수(1)함수 기능

cos(x) 값의 값을 구해줌x (radian) cos xacos(x) 값의x (radian) cos-1 값을 구해줌xsin(x) 값의 값을 구해줌x (radian) sin xasin(x) 값의x (radian) sin-1 값을 구해줌xtan(x) 값의 값을 구해줌x (radian) tan xatan(x) 값의x (radian) tan-1 값을 구해줌x

복소수에 관한 함수들(2)함수 기능

abs(x) 복소수 의 를 계산함x magnitudeangle(x) 복소수 의 을 계산함x phase angleconj(x) 복소수 의 를 계산함x conjugateimag(x) 복소수 의 허수 부분을 나타냄xreal(x) 복소수 의 실수 부분을 나타냄x

논리 기호(3)기호 기능 기호 기능

== 같다 <= 작지 않다

~= 같지 않다 & AND> 크다 | OR>= 크거나 같다 ~ NOT< 작다 참이면 거짓이면 으로 나타냄1 , 0※

>> A=[1 2 3 4 5];>> A(find(A > 3))=0;>> A

A =

1 2 3 0 0

MATLAB Tutorial

- 11 -

관련 함수들(4) Graph함수 기능

plot 벡터 또는 행렬의 열에 대하여 의 그래프를 그려줌linear scalesubplot 한 창에 여러 를 그려줌figure graphstem 한 값으로 그래프를 그려줌discretesemilogx 축은 축은 의 그래프를 그려줌x log scale, y linear scalesemilogy 축은 축은 의 그래프를 그려줌x linear scale, y log scaleloglog 축은 축은 의 그래프를 그려줌x log scale, y log scaletitle 의 제목을 붙여줌graphxlabel 축에 축의 이름을 붙여줌xylabel 축에 축의 이름을 붙여줌ygrid 눈금 격자들을 그래프에 나타내어 줌

figure 새로운 창을 열어줌figure

와 의 그래프를 하나의 창에 그려보자ex] f(t) = sin(t) g(t) = cos(t) figure

clear allclose allclc;t = 0:0.01:10;f = sin(t);g = cos(t);subplot(211)plot(t,f);grid;title('f(t)=sin(t)');xlabel('t [sec]');ylabel('f(t)');subplot(212)plot(t,g);grid;title('g(t)=cos(t)');xlabel('t [sec]');ylabel('g(t)');

범례 (legend)◆

그래프의 파형 각각에 대한 설명을 를 이용하여 삽입할수 있다legend() .

ex]

>>lengend('y=sin(x)');

MATLAB Tutorial

- 12 -

기타 함수들(5)함수 기능

rand(n) 과 사이의 임의의 숫자를 원소로 하는 행렬 형성0 1 n×nrandn(n) 평균이 편차 인 분포를 가지는 행렬 형성0 , 1 Gaussian n×n

linspace(a,b) 와 사이의 구간을 선형적으로 똑같이 등분한 개의 원소를a b 100가진 벡터를 형성

linspace(a,b,n) 와 사이의 구간을 선형적으로 똑같이 등분한 개의 원소를 가진a b n벡터를 형성

ceil(x) 보다 큰 가장 가까운 정수값을 나타냄xfix(x) 값 중 소수 부분을 잘라 버린 정수값을 나타냄xfloor(x) 보다 작거나 같은 정수값을 나타냄xround(x) 에 가장 가까운 정수값을 나타냄xexp(x) 즉exponential , e-x 을 나타냄

log(x) 자연로그 를 계산함ln xlogY(X) 상용로그 logy 를 계산함x ·max(x) 벡터의 최대값을 보여줌xmin(x) 벡터의 최소값을 보여줌x

에서는 상당히 많은 함수들을 제공해 준다 수업을 듣다가 필요한 함수가MATLAB .※

있을 경우 를 통해 자신이 원하는 함수를 찾아보고 그것을 사용할 수 있다면 위의help함수들을 굳이 외우지 않더라도 손쉽게 여러 함수들을 사용할 수 있을 것이다.

의 가장 좋은 점은 를 통하여 사용자가 손쉽게 모든 프로그램을 작성할MATLAB help수 있다는 것이다 에는 그 함수의 설명과 간단한 예시도 덧붙여진 것도 있으므로. help잘 찾아보면서 을 사용하길 바란다MATLAB .

MATLAB Tutorial

- 13 -

대수 방정식 풀이 및 라플라스 변환2.5을 이용하여 대수 방정식의 근을 구할 수 도 있고 근을 알고 있을 경우 방정MATLAB ,

식의 계수를 구할 수 도 있다 그리고 공학도들이 많이 사용하게 되는 라플라스 변환.도 손쉽게 풀 수 있겠다.

차 방정식의 풀이(1) n주어진 방정식의 근을 구할 때)ㄱ

함수 사용: roots

ex] 의 근을 구해보자.

>> x=[1 3 2];>> y=roots(x)y =-2-1

근을 알고 방정식의 계수를 구할 때)ㄴ함수 사용: poly

근이 인 방정식의 계수를ex] 3, 2, -1구해보자.

>> y=[3 2 -1];>> x=poly(y)x =1 -4 1 6

다항식의 연산)ㄷ두 다항식을 곱하여 계수를 구하고자 할 때는 을 통해 구할 수 있다convolution .

다음 두 다항식의 곱을 구해보자ex] . , ×

>> A = [1 3 2]; B = [1 0 1 -2];>> C = conv(A,B)C =

1 3 3 1 -4 -4라플라스 변환(2)

시간영역에서의 수식을 라플라스 변환하고자 할 때 우선 라는 명령어를 이용하, syms여 객체를 형성한다 그리고 함수를 이용하여 그 수식의 라플라스 변symbolic . laplace환된 식을 구할 수 있겠다.

ex] 의 라플라스 변환된 식을 구해보자. ℒ

>> syms t s w>> x = cos(w*t)x =cos(w*t)

>> y=laplace(x)y =s/(s^2+w^2)

MATLAB Tutorial

- 14 -

만들기2.6 M-File앞서 설명하였듯이 의 경우 사용자가 자신이 필요한 기능을 가진 함수를 만들MATLAB기 위해 을 생성함으로써 보다 손쉽게 응용 프로그램들을 만들어 나갈 수 있다M-File .

은 반드시 알아야 할 부분이라고 할 수 있겠다M-File .의 일반적인 형태(1) M-File

function [ outarg1 , outarg2 , ... ] = name ( inarg1 , inarg2 , ... )함수에 대한 설명을 주석으로 사용%. . .. . .

출력변수outarg1 = . . . ; % 1출력변수outarg2 = . . . ; % 2

.

.출력변수의 이름을 적는 곳- outarg :자신이 사용하고자 하는 함수의 이름을 정하는 곳- name :입력변수의 이름을 적는 곳- inarg :

사용자가 이라는 함수를 만들어 로 저장할 경우 만약 명이 자신이 만name M-File M-File※

든 이라는 함수의 이름과 다르면 명으로 실행해야 파일을 실행할 수 있다name M-File .

평균과 표준편차 구하기 작성ex] M-Filefunction [ avg , stdev ] = stats (x)% Mean and standard deviation% Returns mean (avg) and standard deviation (stdev) of the data% in the vector x , using Matlab functionsavg = mean ( x ) ; % meanstdev = std ( x ) ; % standard deviation

MATLAB Tutorial

- 15 -

예제 및 실습3.그리기3.1 Graph

ex 1] 을 그려 보자.

sol]▪ 의 주기는?

을 이용하여 위의 주기가 맞는지 그려보도록 하자MATLAB .을 선택하거나1. [File] - [New] - [M-File] 을 클릭한다

창이 열리면 프로그램을 작성한다2. Editor .우선 시간 에 관한 변수의 범위 설정이 이루어져야 한다3. t .수식을 적는다4. .그래프를 그린다5. .clear all;

close all;

t = 0 : 0.001 : 1;

xt = 3*cos(10*pi*t) + 4*sin(10*pi*t);

plot(t , xt );

grid;

title('x(t)=3cos(10*pi*t)+4sin(10*pi*t)');

xlabel(' TIME [sec] ');

ylabel(' AMPLITUDE ');

변수들의 초기화%

열려있는 모든 그림창 닫기%

의 변수 범위 설정% t

구하고자 하는 수식% x(t)

그래프 그리기%

격자 그리기%

그래프의 제목 쓰기%

축 이름 붙이기% x

축 이름 붙이기% y

Result]

그래프에서 보면 알 수 있듯이

주기는 인 것으로 나타났고0.2 ,정현파 형태의 파형이 나타나는

것을 관찰할 수 있다.

MATLAB Tutorial

- 16 -

실습 1] 의 주기를 구하고 을 통해 확인해보, MATLAB

자.

ex 2] ≤ ≤ 은 정수 의 그래프를 그려보자( n ) .

sol]의 과정과 동일하다1~2. ex1 .

변수에 관한 범위를 설정한다3. n .수식을 적는다4. .그래프를 그린다5. .

clear all;

close all;

n = 0 : 10;

xn = 2*n;

stem(n , xn );

grid;

title('x(n) = 2n');

xlabel(' n ');

ylabel(' AMPLITUDE ');

변수들의 초기화%

열려있는 모든 그림창 닫기%

의 변수 범위 설정% n

구하고자 하는 수식% x(n)

그래프 그리기%

격자 그리기%

그래프의 제목 쓰기%

축 이름 붙이기% x

축 이름 붙이기% y

Result]

의 그래프는 한 형태ex1 continuous로 그렸지만 이 문제에서는 정수값

만으로 주어져 있으므로 각 정수에

해당하는 값만을 가지게 된다 따라.서 함수를 사용하지 않고plot stem함수를 사용하여 나타내는 것이다.

MATLAB Tutorial

- 17 -

실습 2]

↑을 함수를 이용하여 그려보시오stem .

만들기3.2 M-Fileex 3] 임의의 두 벡터의 원소의 곱을 구하는 프로그램을 작성하여 보자.

sol]고려사항[ ]

벡터가 있다고 가정하면 두 벡터의 길이가 다르면 곱할 수 없다1. X, Y , .와 중 의 벡터의 길이가 길다고 가정하면 의 벡터의 길이를 의 벡터의 길2. X Y X , Y X

이에 맞추고 벡터의 원소 외의 부분에 을 넣는다Y 0 .그리고 두 벡터 와 를 원소의 곱 연산 사용하여 곱한다3. X Y .* .

[Program]

function [Z] = multiply ( X , Y ) 함수 정의 선언%

% [the element of X]*[ the element of Y] 함수 기능 설명%

X_leng=length(X); 벡터의 길이구하기% X

Y_leng=length(Y); 벡터의 길이 구하기% Y

if X_leng >= Y_leng 벡터가 더 길거가 같은 경우% X

Z_leng = X_leng; 벡터의 길이에% X

K = X_leng - Y_leng; 두 벡터 길이의 차를 구함%

Y = [Y zeros(1,K)]; 원래의 내용 뒤에 을 넣음% 0

else 벡터가 더 긴 경우% Y

Z_leng = Y_leng;

K = Y_leng - X_leng; 두 벡터 길이의 차를 구함%

X = [X zeros(1,K)]; 원래의 내용 뒤에 을 넣음% 0

end

Z = X .* Y; 두 벡터 원소 곱을 형성 벡터 저장%

MATLAB Tutorial

- 18 -

[Result]

벡터의 길이는 이고 벡터의a 4 , b길이는 이다10 .따라서 벡터에는 네 요소를 제외a한 나머지 부분은 을 넣어 곱하게0된다 그렇게 해서 두 벡터를 원소끼.리 곱하면 와 같은 결과를 얻을 수c있다.

은 기본적으로 를 바탕으로 설계된 언어이므로 과 유사한 문MATLAB C/C++ C/C++◈

법체계를 갖고 있다 따라서 를 공부해 본 적이 있다면 그리 어렵지 않게 익힐. C/C++수 있고 또한 결과를 손쉽게 확인할 수 있는 장점이 있다 하지만 은 행렬. MATLAB을 위한 연산에 적합하도록 고안된 프로그램이므로 가급적 반복문을 줄이고 행렬 연

산으로 바꾸어 처리하는 것이 실행속도 향상에 도움이 된다.

참고문헌

[1] Brian D.Hahn , Essential MATLAB for Scientists and Engineers second ed, 2003[2] Vinay K. Ingle, John G. Proakis , Digital Signal Processing using MATLAB , 1998

황우현 장순철[3] , , 활용MATLAB , 1994배건성[4] , 모바일 신호처리를 위한 기초DSP , 2005.6배건성[5] , Lecture Note : Communication Theory , Fall semester 2005