1 / 38

디지털신호처리

디지털신호처리. MATLAB 의 사용. MATLAB 의 역사 및 소개. 초기 MATLAB 은 Cleve Moler 에 의해 Fortran 으로 작성 현재는 미국의 MathWork 사에 의해 C++ 로 작성 Matlab 은 Matrix 계산에 뛰어난 능력을 가지고 있으며 많은 이론의 실증 프로그램을 작성하는데 사용되고 있다 . Matlab 코딩 체계는 우리에게 친숙한 수학적인 기호와 간단한 C 문법으로 행해진다 . MATLAB 의 이용범위. 수학과 관련된 계산 알고리즘 개발

ziva
Download Presentation

디지털신호처리

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 디지털신호처리 MATLAB의 사용

  2. MATLAB의 역사 및 소개 • 초기 MATLAB은 Cleve Moler에 의해 Fortran으로 작성 • 현재는 미국의 MathWork사에 의해 C++로 작성 • Matlab은 Matrix계산에 뛰어난 능력을 가지고 있으며 많은 이론의 실증 프로그램을 작성하는데 사용되고 있다. • Matlab코딩 체계는 우리에게 친숙한 수학적인 기호와 간단한 C문법으로 행해진다.

  3. MATLAB의 이용범위 • 수학과 관련된 계산 • 알고리즘 개발 • 상황 Modeling과 Data분석 • 여러 가지 과학과 공학적인 그래픽적 표현 • GUI에 의한 Application 개발 • 제어분야의 프로그래밍 • 네트워크 시뮬레이션

  4. MATLAB의 기타 특징 • 행렬을 기본으로 계산하기 때문에 MATLAB의 기본 데이터 요소는 차원의 제한이 없는 Array(배열)이다. • 제어 및 이미지 프로세싱 등 여러 분야에 적용을 하기 위해 ToolBox를 제공하고 있다. • ToolBox란 신호 처리, 통계학, 영상 처리, 제어, fuzzy logic, 재정 등 여러 분야에 대한 적용 가능한 도구를 제공한다. • ToolBox는 MATLAB의 기본 제공되는 명령어들과 외부 언어로 구성이 되어있으며 제공되는 소스코드를 이용하여 사용자가 추가적인 응용을 가능하도록 지원한다. • 외부 프로그램, 즉, C, Fortran과 link해서 이용할 수 있는 mex기능도 제공하고 있다.

  5. MATLAB 실행

  6. MATLAB 에디터 : M-file

  7. PATH 설정 • File/Set Path • 작성한 파일이 있는 위치를 등록하여 MATLAB에서 사용할 수 있도록 한다.

  8. M-file • 여러 개의 함수들을 사용, 사용자의 목적에 맞는 실행 file을 만들기 위해서는 MATLAB 의 함수들로 구성된 M-file을 만들어야 한다. • M-file은 text editor(예를 들면 윈도우에 있는 notepad)를 사용하여 MATLAB 의 명령어를 차례로 입력하면 된다. • M-file “Inv_A.m”의 내용 A=[1 2 4; 3 5 6; 6 2 1] B=inv(A) • 만들어진 M-file을 실행시키기 위해서는 명령창에서 Inv_A라고 입력하고 enter를 치면 Inv_A에 포함된 명령들을 수행한다.

  9. MATLABHelp >> help mean : Command Window에 해당 내용이 출력된다. >> lookfor covariance : more general information >> helpwin: small window, hypertext >> helpdesk: HTML browser가 뜬다.

  10. 행렬의 입력방법 • 직각 수치 행렬을 기본적인 자료의 형식으로 취급한다. • 행렬의 원소 : 실수, 복소수, 문자 • MATLAB에서 사용되는 행렬 입력방식 • MATLAB 명령창 • 내부명령 또는 함수들을 사용하여 행렬을 생성 • M-파일 내에서 행렬을 구성 • 외부의 자료 파일로부터 행렬을 불러들임(*.mat,*.dat,*.txt) • MATLAB은 다른 프로그래밍 언어들과 달리 차원의 선언이나 형선언이 필요 없다. 컴퓨터가 사용 가능한 크기까지 자동적으로 저장공간을 할당해 준다.

  11. 행렬입력 규칙 • 전체 원소들은 대괄호 [ ] 로 감싼다. • 원소들은 빈칸 또는 쉼표를 사용하여 분리한다. • 원소의 끝에 세미콜론( ; )을 붙이면 한 행의 종료를 의미한다. • Command Window에 행렬을 입력하는 예 >> A=[1 2 3; 4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9

  12. 행렬입력: Workspace 1 3 • 더블 클릭하면 Array Editor가 활성화 된다. • Array Editor에 행렬값을 입력한다. 4 2

  13. 행렬원소 • 수치, 함수, 수식, 문자 등 : 배열 원소는 스페이스로 구별 ; 세미콜론이 없으면 입력한 내용을 실행 하고 다음 라인에 출력한다. ; 세미콜론이 있으면 입력한 내용을 실행 하고 화면에 보여주진 않는다. ; 세미콜론이 문장 안에 있으면 행을 구별한다

  14. 행렬원소: 원소 추가 or 대치 • 기존의 행렬보다 차원이 큰 범위에 원소를 삽입하면 나머지는 0이 채워지고 새로운 행렬을 생성할 때 자신의 행렬 일부를 이용하여 만들 수 있는데 이를 부행렬이라한다. • 현재 X는 1*3 행렬로 [ -2.5000 12.1825 1.5000 ] 저장되어 있다. >> x(5)=abs(x(1))x = -2.5000 12.1825 1.5000 0 2.5000 본래 있던 X행렬에 5번째 열의 값을 만들고 그 값을 abs(x(1))로 저장한다. 4번째 열은 값을 지정하지 않았으므로 0이 채워진다

  15. 행렬원소 • 작은 행렬을 이용하여 큰 행렬에 추가할 수도 있고, 반대로 할 수 도 있다. >> C = A( 2 , : ) C = 4 5 6 >> D = A( : , 3 ) D = 3 6 1 5 >> X = 0 : 0.1 : 1; >> Y = sin ( 2 * pi * X ) ; >> z=[1 3 5]; A=[A;z] A = 1 2 3 4 5 6 6 2 1 1 3 5 >> B = A( 1 , 2 ) B = 2 A행렬의 2행 모든 열 값을 C 행렬에 저장 A행렬의 모든 행,3번열 값을 C 행렬에 저장 A행렬의 1행 2열 값을 B 행렬에 저장 X행렬에 0부터 0.1 간격으로 1까지 저장. 1X11 행렬 각각의 X행렬값을 연산하여 Y행렬에 저장. 1X11 행렬

  16. 기타 행렬 표현 • MATLAB에서는 선형 대수학이나 신호 처리 분야에서 취급되는 특별한 행렬들을 생성하는 함수들을 제공한다. • compan : 동반 행렬(Companion matrix) • diag : 대각 행렬(Digonal matrix) • gallery : 시험 행렬(Test matrix) • hadamard : Hadamard행렬 • hankel : Hankel행렬 • hilb : Hilbert 행렬 • invhilb : Hilbert 행렬의 역행렬 • kron : Kronecker텐서 곱(tensor product)

  17. 기타 행렬 표현 • magic : 마방진( 각각의 행, 열, 대각선을 합한 값들이 모두 같은 행렬) • pascal : Pascal의 삼각형 • toeplitz : Toeplitz행렬 • vader : Vandermonde행렬 • 그 이외에 실용적인 행렬들 • zeros : 0만으로 구성된 행렬 • ones : 1만으로 구성된 행렬 • eye : 단위 행렬 >> k=magic(3) k = 8 1 6 3 5 7 4 9 2 >> o= zeros(3) o = 0 0 0 0 0 0 0 0 0 >> t=zeros(2,3) t = 0 0 0 0 0 0

  18. 행렬의 합과 Transpose • MATLAB은 "열 벡터"방향으로 연산한다. Transpose는 ’를사용한다. A의 행을 열로 변경 >> A = [ 1 1 1; 1 2 3; 1 3 6] A = 1 1 1 3 2 3 3 3 6 >> sum(A) ans = 7 6 10 >> k=sum(A) k = 7 6 10 >> A' ans = 1 3 3 1 2 3 1 3 6 >> e = A' e = 1 3 3 1 2 3 1 3 6

  19. 기본 산술 수식1: 선형대수 규칙 • Summation and Subtract • A + B & A – B : The same dimensions. • 해당하는 각각의 행렬 값을 더하거나 뺀다 • Product • A * B : A is m * n matrix & B is n * p matrix, • the result is m * p matrix. • Division • Left division : X = A \ B → inv(A)*B • Right division : X = A / B → A*inv(B)

  20. 기본 산술 수식1 예 >> a= [1 2; 3 4] a = 1 2 3 4 >> b= [0 1; 2 3] b = 0 1 2 3 >> c = a + b c = 1 3 5 7 >> a-b ans = 1 1 1 1 >> a * b ans = 4 7 8 15 >> inv(a) ans = -2.0000 1.0000 1.5000 -0.5000 >> inv(b) ans = -1.5000 0.5000 1.0000 0 X = A / B → A*inv(B) >> x = a/b x = 0.5000 0.5000 -0.5000 1.5000 x = a/b = a * inv(b) x(1,1) = (a11 * b11) + (a12 * a21) =(1 * -1.5) + (2 * 1) = 0.5 x(1,2) = (1 * 0.5) + (2 * 0) = 0.5 x(2,1) = (3 *-1.5) + ( 4 * 1) = -0.5 x(2,2) = (3 * 0.5 ) + (4 * 0) = 1.5

  21. 기본 산술 수식2: 배열 연산 • x. * y = [ xij * yij ] • x. / y = [ xij / yij ] • x. ^ y = [ ] • .* ./ . ^ 기호들은 각각의 배열값에만적용된다. a = 1 2 3 4 b = 0 1 2 3 >> a.*b ans = 0 2 6 12 >> a./b Warning: Divide by zero. ans = Inf 2.0000 1.5000 1.3333 >> a.^b ans = 1 2 9 64 >> a.\b ans = 0 0.5000 0.6667 0.7500

  22. 난수생성 • rand : 0과 1 사이의 값으로 균등 분포를 갖는 단일 난수를 발생 • rand(1, n) : 0과 1 사이의 값으로 균일 분포를 n개의 난수행벡터를 만든다. • rand(n) : 0과 1사이의 값으로 균등 분포를 갖는 난수들로 이루어진 nXn행렬을 만든다. >> rand ans = 0.9501 >> rand ans = 0.2311 >> a = rand(1, 4) a = 0.6068 0.4860 0.8913 0.7621 >> b = rand(2, 4) b = 0.4565 0.8214 0.6154 0.9218 0.0185 0.4447 0.7919 0.7382 >> c = rand(3) c = 0.1763 0.9169 0.0579 0.4057 0.4103 0.3529 0.9355 0.8936 0.8132 >> d = rand(3, 1) d = 0.1987 0.6038 0.2722

  23. 논리연산: 관계연산 Relational Operations의 결과 true이면 1, false이면 >> f = y > 5.0 f = 0 0 1 >> y= [ 4 5 6] y = 4 5 6 >> k = y > 3.0 k = 1 1 1

  24. 논리연산 • z = n2.*log(n2+(n2==0)); • a = n2+(n2==0); >> n2 = [3 0] n2 = 3 0 >> z = n2.*log(n2+(n2==0)) z = 3.2958 0 >> a = n2+(n2==0) a = 3 1

  25. M-file Programming 1 • M-file : Matlab언어로 쓰여진 파일들(files) • 연속적인 Matlab문장들(명령어들)을 수행하는 script mode • 파일 이름은 어떠한 이름으로도 사용 가능 • 입력 매개변수와 출력 매개변수를 다루는 function mode • 파일의 이름은 function이름과 가능한 같게 한다 • text editor를 이용하여 M-file 작성 • command window에서 M-file을 부르거나, 다른 M-file내에서 호출 • 비교 • function : 변수가 function workspace에 등록됨. • script : 변수가 base workspace(command workspace)에 등록됨. (전역변수)

  26. 함수 작성 유의사항 • 파일 첫줄에 ‘function’이라는 단어가 있는 M-파일이 함수 파일 function 변수 = 파일이름(인자) function [Pccoeff, Pcvec] = pca(data, N) • 스크립트와의 큰 차이점은 ‘function’이 없으면 스크립트로 인식 • 파일이름의 이름으로 사용된 이름이 함수의 이름과 같아야 함 • ‘%’기호 뒤에 나오는 문장들은 주석으로 인식되어 무시 • ‘%’기호와 함께 적어 놓은 설명 부분은 MATLAB프롬프트에서 ‘help mean’이라고 입력하였을 때 화면상에 표시 • 첫 번째로 ‘%’ 기호 이후의 주석은 ‘lookfor mean’이라고 입력하면 화면에 ‘mean’이라는 단어를 포함하는 항목을 모두 표시

  27. function 작성 • Matlab – Command Window에서 fact(2)를 해보자. • 다음과 같은 메시지가 나온다 ??? Undefined command/function 'fact'. • 작성한 후 디스크 모양의 Save를 클릭하면 저장 화면이 뜨고, 저장할 이름에 fact라고 되어 있다. • prod.m함수는 입력 매개변수로 주어진 벡터를 구성하는 각각의 원소에 대한 곱을 반환하는 함수(matlab에서 지원) text editor 실행

  28. 기본 함수 설명 • disp.m : 주어진 ‘메시지’ 문자열을 화면에 출력. • disp(‘메시지’) • rem.m : 주어진 배열 a,b에 대해 a./b를 계산하여 나머지들을 반환한다. • Y = rem(a, b) • fix.m : 주어진 배열 X의 원소들의 소수부분을 제거하고 정수로만 이루어진 배열을 만든다 • Y = fix(X)

  29. Flow Control : if/switch case • 임의의 벡터 x가홀/짝수를 구별하는 exe_fc.m함수를 작성한다. • 입력이 없으면 error 메세지 출력

  30. Flow Control : for for 변수=시작값:증가분:최종값 < 실행문> end k = i+2 는 어떤 결과가 나올까?

  31. Flow Control : while while 논리적인 조건 < 실행문> end • n!의 결과가 100을 넘어가기 전의 “n!’의 “n”을 구하시오 % disp대신 sprintf로 변경한 결과

  32. Flow Control • C언어에서와 동일한 break, continue, return 명령어 지원 • try, catch : 예외 처리 기능 • try 다음에 나오는 명령문중에서error가 발생하면실행을 중단하고 , catch뒤에 나오는 명령문을 실행한다. catch에서도 error가 발생하면 제어권을 matlab command window로 돌려준다. • 일종의 변형된 if/else문이다 try < 명령문 1> < 명령문 2> … catch < 명령문 3> … end

  33. Data Types : 다차원 배열 • 2, 3, 4차원 배열 등의 다차원 배열 사용 가능 • 3차원 배열 예 • 다차원 배열을 만드는 함수들 • ones.m, zeros.m, rand.m, randn.m, cat.m, reshpae.m, repmat.m등

  34. Plot 1 • Line Plots : plot.m, ploty.m, loglog.m etc • Bar Plots : bar.m, barh.m etc • Scatter Plots • Pie Charts • Contour Plots 와 Mesh • plot3와 surf

  35. Plot 2 % 그래프가 그려진 후 다음 명령을 실행해보자. % 어떤 변화가 발생하는가? >> xlabel('test plot x') >> ylabel('test plot y'); >> title('plot 연습') 선 지정 : 빨간 쇄선, 별마크

  36. Plot 3 • Grid : 그래프의 눈금 표시에서의 격자를 설정․해제한다. • Box : 축 상자를 설정․해제한다. • 제목과 축의 라벨들은 title, xlabel, ylabel을 사용하여 첨가 • text(x,y,S) : 좌표 (x,y)에 문자열 S를 첨가한다. • Gtext : 마우스를 사용하여 대화식으로 텍스트를 첨가 • axis([xminxmaxyminymax])는 현재의 그래프의 비율을 주어진 값으로 설정 • hold on : 현재의 그래프에 그래프를 더 추가 (cf. hold off) • figure : 다중 그림창을 생성. figure(n)은 n번째의 그림창을 활성화함. • 하나의 figure는 subplot 명령을 사용하여 나뉘어 질 수 있음. • zoom on으로 설정해 두면, 마우스로 그림창을 확대할 수 있음.

  37. Plot 4

  38. fplot • fplot명령은 y = f(x) 형태인 함수 값을 지정된 한계 사이에서 그래프를 정확하게 그려주는 명령 • y = x^2 + 4*sine(2x) -1 그래프 그리기 fplot(‘function’, limits, line specifiers)

More Related