6 분 소요

영상처리 과목

MATLAB 시작하기(week2, ppt1)

학습목표

  1. 프로그램을 정의하고 프로그래밍의 기본을 이해한다.
  2. 매트랩을 시작하는 방법과 매트랩의 각 창을 이해한다.
  3. 변수와 연산자를 이해하고 명령어 창에서 실행한다.

1.1 프로그램과 프로그래밍

프로그램

  • 컴퓨터를 이용하여 문제를 해결하기 위한 명령어들의 모임

    -> 어떤 데이터를 어떻게 연산하여 결과로 어떤 데이터를 내보내라고 하는 일련의 과정을 서술한 것

프로그래밍

  • 프로그램을 작성하는 과정

컴퓨터를 이용하여 처리하는 데이터

  • 영상 데이터
  • 음성 데이터
  • 문자 데이터
  • 숫자 데이터 -> 모든 데이터는 컴퓨터가 인식하여 처리할 수 있는 형식으로 만들어 주어야 하며 이것은 최종적으로는 2진수로 표현된다.

문자데이터의 숫자 표현

  • 문자 데이터도 컴퓨터 내부적으로는 숫자로 변환되어 처리된다.
  • 문자 데이터를 숫자 데이터로 또는 숫자 데이터를 문자 데이터로 변환하기 위해서는 ASCII 코드와 같은 코드표를 이용한다.

1.1.1 상수와 변수

상수

  • 어떤 값 자체

변수

  • 상수를 저장하는 기억 장소

1.1.2 연산자와 명령어

연산자

  • +(더하기 연산자)
  • =(대입 연산자)

명령어

  • sum(더하기 명령어)

    예: sum(x,y)

1.2 MATLAB 시작하기

기본 명령어

clc: 명령어 창 명령 삭제 clear: 작업공간 창 작업 삭제

특정 변수만 삭제하려면: ‘clear 변수이름’

who: 현재 작업공간 창에 저장된 변수들의 이름 보여줌

whos: 현재 작업공간 창에 저장된 변수들의 이름, 크기, 데이터 형 등 보여줌

help: 명령어 도움말

1.3 명령어 규칙

  1. 대문자와 소문자를 구분한다.
  2. 명령의 끝에 ;을 입력하면 실행 결과가 출력되지 않는다.
  3. 한 라인에 여러개의 명령을 한번에 입력하여 명령을 차례로 실행시킬 수 있다.

    이때 명령어들은 ,로 구분하여야 하고 왼쪽에서 오른쪽으로 실행된다.

  4. 위쪽 방향키를 사용해 이전 실행 명령어를 다시 호출할 수 있다.

1.4 변수 생성 규칙

  1. 변수는 영문자 알파벳, 0~9의 숫자, _ 만 가능하다.
  2. 대문자와 소문자는 서로 구분된다.
  3. 반드시 문자로 시작해야 한다.
  4. 문자들 사이에 공백이 들어갈 수 없다.
  5. 한 변수에는 최대 63개의 문자가 들어갈 수 있다.
  6. _을 제외한 특수기호는 들어갈 수 없다.
  7. 매트랩의 명령어와 같은 이름의 변수는 만들 수 없다.
  8. 매트랩의 예약어와 같은 이름의 변수는 만들 수 없다.

1.4.1 특수 상수

NaN: 수가 아니라는 의미

pi: 원주율 𝝿

inf: 무한대

i,j: 복소수에서 허수

1.4.2 산술 연산자

+: 덧셈

-: 뺄셈

*: 곱셈

/: 나눗셈(오른쪽)

₩: 나눗셈(왼쪽)

^: 거듭제곱

1.4.3 내장 함수

sqrt(x): x의 제곱근

exp(x): 지수

abs(x): 절대값

log(x): 자연로그(밑이 e인 로그)

log10(x): 밑이 10인 상용로그

factorial(x): x! 계산

삼각함수

각 - 라디안

sin(x), cos(x), tan(x), cot(x)

각 - degree

sind(x), cosd(x), tand(x), cotd(x)

근사화 함수

round(x): 가장 가까운 정수로 근사화

fix(x): 0방향을 향해서 가장 가까운 정수를 구하는 함수

ceil(x): 올림함수

floor(x): 내림함수

rem(x,y): x를 y로 나누었을 때 나머지를 구하는 함수

sign(x): 부호함수 (x>0이면 1, x<0이면 -1, x=0이면 0)

MATLAB 배열(week3, ppt2)

학습 목표

  1. 1차원 및 2차원 배열을 이해하고 생성한다.
  2. 배열 원소의 주소지정을 이해한다.
  3. 배열 생성과 조작에 관련된 내장함수를 이해한다.

배열의 종류

  • 일원소 배열(scalar): 1행 1열(1x1)
  • 1차원 배열(vector): N행 1열(NX1) or 1행 N열(1XN)
  • 다차원 배열(array): 2차원(N행 M열, NXM), 3차원(N행 M열 L면, NXMXL)

2.1 벡터(1차원 배열)의 생성

1차원 배열-> 행벡터, 열벡터

2.1.1 행벡터 생성

  1. []안에 콤마 또는 공백을 사용하는 방법

    x= [1,2,3,4,5]
    x= [1 2 3 4 5]
    
  2. []안에 콜론 연산자를 사용하는 방법

    a: 시작값

    b: 최종값

    m: 증가치

    x= [a:m:b]
    x= a:m:b
    
  3. 매트랩에서 제공하는 명령어를 사용하는 방법 linspace(a,b,n)

    a: 첫번째 원소

    b: 마지막 원소

    n: 원소의 개수 (default: 100)

    logspace(a,b,n)

    a: 10ª에서 지수

    b: 10ᵇ에서 지수

    n: 원소의 개수 (default: 50)

추가 명령어

length(x): x벡터의 크기 확인

2.1.2 열벡터 생성

  1. 행 구분자인 세미콜론을 이용

    x = [2; 9; 6; 17]
    
  2. enter 이용

    x = [5
    6
    7
    8]
    
  3. 행벡터 생성후, 전치(transpose)를 이용

2.2 인덱싱

n개의 원소를 가진 벡터 A의 k번째 원소를 인덱싱

1부터 시작 (1~n)

a = [4 5 6 7 8]
    #1 2 3 4 5 (인덱스)
  1. 값 참조(reference) R-value

    A = [4 -28 6 12 -2]
    x= A(2)
    # x => -28
    
  2. 재할당(reassignment) L-value

    A(3) = 30
    # A=> [4 -28 30 12 -2]
    

2.2.1 인덱스 k의 범위

A(k)-> R-value-> 1 <= k <= n

A(k)-> L-value-> k >= 1 인 임의의 값

2.2.2 다양한 인덱싱

  1. 1개의 원소를 인덱싱하는 경우

    • 자연수
    • 스칼라 변수
    A=[4 -28 6 12 -2]
    x=4
    A(x-4)=A(x)
    
    # A= 4 12 6 12 -2
    
    • 키워드 end
    A=[4 -28 6 12 -2]
    x=4
    A(end)=A(end-4)
    
    # A= 4 -28 6 12 4
    
    • 명령어식
    A=[4 -28 6 12 -2]
    x=A(A(1))
    # x = 12
    y = A(end)
    # y = -2
    A(length(A)) = A(end)*2
    # A= 4 -28 6 12 4
    
  2. 여러개의 원소를 인덱싱하는 경우

    • 콜론 연산자

      A(a:m:b)

      a: 시작값, m: 증감치(default: 1), b: 최종값

    A(:): 벡터의 모든 요소를 인덱싱

    A=[4 -28 6 12 -2]
    A(1:2:5) = [10,20,30]
    # A= 10 -28 20 12 30
    
    • 벡터
    A= [2 4 5]
    B= [4 -28 6 12 -2]
    
    x= B(A)
    # x= -28 12 -2 (index 2,4,5)
    
    B(A)=10
    # B= 4 10 6 10 10
    

2.3 벡터의 확장과 축소

A(k) = 값

A=[4 -28 6 12 -2]
A(8)=9

#A= 4 -28 6 12 -2 0 0 9

콜론 연산자를 이용한 벡터의 확장

A(a:m:b) = 값 or 벡터

a: 시작값, m: 증감값, b: 최종값

A=[4 -28 6 12 -2]
A(2:2:8)=90
# A= 4 90 6 90 -2 90 0 90

2.3.1 벡터의 원소 삭제와 크기 축소

A(k) = [] (단, k<=n)

A=[2 12 8 -3 27 1]
A(4)= []

#A= 2 12 8 27 1

2.4 2차원 배열의 생성

  1. 행 구분자인 세미콜론을 이용하여 행과 행을 구분

    A=[2, 9, -1; 4, 27, 19]
    
  2. 행과 행 사이에 enter을 입력하여 정의

    B=[ 7 1
    -4 8
    0 47]
    

2.5 2차원 배열의 인덱싱

A(i,j) (1<= i <= n, 1<= j<= m)

2.5.1 한 개의 원소 인덱싱

A = [1 3 5 7; 2:2:8; -5 -4 -3 -2; 5 1 -3 2]
x= A(2,4) + A(4,2)

#x = 9
  1. 벡터의 2차원적 인덱싱

    A = [4 -28 6 12 -2]
    #   (1,1) (1,2) (1,3) (1,4) (1,5)
    
  2. 2차원 배열의 선형 인덱싱

    A(i,j) == A(k)

    (1,1) (1,2) (1,3)

    (2,1) (2,2) (2,3)

    (3,1) (3,2) (3,3)

    -> (1,1) (2,1) (3,1) (1,2) (2,2) (3,2) (1,3) (2,3) (3,3)

    A=[2, 9, -1; 4, 27, 19; 5 12 -2]
    
    # A = 2  9  -1
    #     4  27 19
    #     5  12 -2
    
    A(2: 5: 9) = [A(2,3)*4, A(8)*A(9)]
    
    # A = 2  9  -38
    #     76 27 19
    #     5  12 -2
    
  3. end 키워드를 이용한 인덱싱

    A(end,j) : 배열 A의 마지막 행의 j열을 인덱싱, 즉 A(n,j)를 의미한다.

    A(i,end) : 배열 A의 i행의 마지막 열을 인덱싱, 즉 A(i,m)를 의미한다.

    A(end,end) : 배열 A의 마지막 행의 마지막 열을 인덱싱, 즉 A(n,m)를 의미한다.

    A=[1  3  5  7; -29   -24   -19   -14;  9  12 15 18]
    A(end, 1) = A(2, end) + A(end,end)
    # A = 1  3  5  7
    #     -29   -24   -19   -14
    #     4  12 15 18
    

2.5.2 여러 개의 원소 인덱싱

  1. 콜론 연산자를 이용한 인덱싱

    • A(a:m:b,j): 배열 A의 a, a+m, a+2m, … 행의 j열을 인덱싱
    • A(i, a:m:b): 배열 A의 i행의 a, a+m, a+2m, … 열을 인덱싱
    • A( : , j): 배열 A의 모든 행의 j열을 인덱싱, 즉 j열 전체를 인덱싱
    • A( : , : ): 배열 A의 모든 행의 모든 열을 인덱싱, 즉 배열 전체를 인덱싱
    A = [1 3 5 7; -29 -24 -19 -14; 9 12 15 18]
    x = A(1:2:3, 4)
    # x = 7
    #     18
    
  2. 벡터를 이용한 인덱싱

    A = [1 3 5 7; -29 -24 -19 -14; 9 12 15 18]
    R = [2,3] #행 인덱스
    C = [1,3,4] #열 인덱스
    X = A(R,C)
    
    # X = -29 -19 -14
    #        9 15 18
    

2.6 2차원 배열의 확장과 축소

2.6.1 2차원 배열의 확장

A(i,j) = 값 (i>n or j>m)

A = [1 3; -14 9]
A(1,3)=20

# A = 1  3  20
#     -14   9  0

A(1:2:5, : ) = 100

#A = 100 100 100
#    -14  9   0
#     100 100 100
#      0   0   0
#     100 100 100

2.6.2 2차원 배열의 축소

A(i,j) = [ ] (i,j)는 행 or 열 단위가 되어야함

A = [1 3 5 7; -29 -24 -19 -14; 9 12 15 18]
A(1,2) = []
# 오류: 행 or 열 단위가 아님

A(1, : ) = []
# A = -29 -24 -19 -14
#     9  12 15 18

2.7 전치 연산자

n X m 크기를 갖는 2차원 배열 A에 대해

A의 전치 = A’

A = [1 5 2]
A'
# ans =  1
#        5
#        2

댓글남기기