Post on 17-Jan-2020
[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