2.2 MATLAB과 배열

MATLAB에서 배열

배열이란: MATLAB이 데이터를 저장하고 다루기 위해 사용하는 기본적인 형태를 말한다. 행(Row)이나 열(Column), 또는 행과 열로 정렬된 수들의 나열을 뜻한다.


1차원 배열 생성 방법

  • 꺾은 괄호 [ ] 안에 배열의 원소들을 직접 입력
  • 외부 데이터 파일로부터 행렬을 읽어 들임
  • MATLAB 명령어나 자신이 만든 m 파일을 이용하여 행렬을 생성


배열의 각 요소

  • 수 또는 미리 정의된 변수들 함수들이 포함된 수학식 등이 될 수 있음.


행 벡터(Row vector)로 만들기

  • 꺾은 괄호[ ] 안에 알려진 원소들을 기입하며, 원소와 원소는 공백이나 콤마(,)로 구분
  • >> 변수명 = [ 벡터 원소들의 나열]

>> t = [ 5, 7, 2, 4 10 29]  % 공백이나 콤마로 원소를 구분

>> t = [ 0, 0.4*pi, 0.8*pi, 1.2*pi, 1.5*pi, 2*pi]   % 수식 표현 가능

>> t = [ 0 0.4 0.8 1.2 1.5 2]*pi    % 위 결과와 같음


열 벡터(Column vector)를 생성하는 세 가지 방법

  • 꺾은 괄호 속에서 원소 뒤에 세미콜론(;)을 입력하면 줄이 바뀜
  • 각 원소 뒤에서 Enter 키를 눌러 바뀐 줄에 새로운 원소를 입력
  • 행 벡터 입력을 마친 후 꺾은 괄호 뒤에 작은따옴표(')를 입력 하여 행 벡터를 전치 (Transpose)


콜론(:)을 사용하여 일정한 간격으로 커지는 원소들을 가진 벡터 생성

  • >> 변수명 = [ m: d: n]
  • m: 배열의 첫번째 원소
  • q: 배열의 원소간 간격, 수학에서 등차수열의 공차와 같은 의미
  • n: 배열의 마지막 원소는 n 을 초과할 수 없음, n이 생략된 경우 1을 의미
>> x = [ 1 : 2 : 8 ]

x =
    1   3   5   7

>> x = 15 : -3 : 8

x =
    15  12  9

>> x = ( 0 : 0.5 : 1 )*pi

x =
    0   1.5708  3.1416

>> t = -1 : 0.5 : 1

t =
    -1.0000   -0.5000   0   0.5000  1.0000

2차원 배열의 생성 방법

  • 행렬(Matrix)로도 불리며 다수의 행과 열을 가짐.
  • 세미콜론(;)이나 엔터(Enter) 키는 새로운 행(Row)을 만드는 역할을 함.
  • 원소들 끝에 세미콜론을 입력하거나 엔터키를 누름으로써 원하는 행렬 생성.
>> A = [2 4 10; 16 3 7; 8 12 35]

A =
    2   4   10
    16  3   7
    8   12  35

>> A = [2 4 10
16 3 7
8 12 35]

A =
    2   4   10
    16  3   7
    8   12  35


콜론(:)을 이용하여 2차원 배열이 생성 방법

>> x = 4; y = 2; z = 8;   % 세 변수의 정의
>> A = [x y z; sin(x/z) x^2 x+y]

A =
    4.0000  2.0000  8.0000
    0.4794  16.0000 6.0000

>> A = [1:2:11; 0:5:25; linspace(10,10,60); 67 2 43 68 4 13]

A =
    1   3   5   7   9   11
    0   5   10  15  20  25
    10  20  30  40  50  60
    67  2   43  68  4   13


linspace을 이용하여 2차원 배열이 생성 방법

>> A = [2 4 10; linspace(8, 3, 3)]

A =
    2   4   10
    8   3   -2

>> A = [2 4 10; 8: -5: -2]

A =
    2   4   10
    8   3   -2

>>A = [A;10 20 30]

A =
    2   4   10
    8   3   -2
    10  20  30


배열 명령어

  • zeros(m, n), ones(m, n), eye(n) 명령들은 특수한 원소들을 갖는 배열을 만드는 데 사용
>> Z = zeros(2:3)   % 원소가 모두0인 2x3 크기의 행렬

Z =
    0   0   0
    0   0   0

>> O = ones(2,2)    % 원소가 모두1인 2x2 크기의 행렬

O =
    1   1
    1   1

>> I = eye(3)   %  대각선 원소만 1이고 나머지, 원소들은 모두 0인 3x3의 행렬

I =
    1   0   0
    0   1   0
    0   0   1


전치(Transpose) 연산자

  • 행 벡터를 열 벡터로, 열 벡터를 행 벡터로 변환.
  • 행렬의 행과 열을 바꾸는 전치 연산.
  • 벡터나 행렬 뒤에 따옴표(‘)를 첨부.
>> v = [10; 20; 30];
>> vt = v’

vt =
    10  20  30

>> x = [10 20 30]; xt = x’

xt =
    10  20  30

>> A = [1 2 3; 10 20 30]

A =
    1   2   3
    10  20  30

>> B = A’

B =
    1   10
    2   20
    3   30


배열에 접근

  • 행렬이나 배열에서 한 개 또는 여러 개의 원소의 위치를 찾거나 접근 가능.
  • 행렬이나 배열의 일부 원소들의 값을 갱신하거나 계산에서 특정 원소를 이용하려고 할 때.
  • 일부 원소들을 새 변수에 할당하고자 할 때.
  • 벡터에서 원소의 주소는 첫 번째 원소로부터 해당 원소의 순서.
  • v(k)는 k번째의 벡터 v의 원소.
  • 벡터의 한 원소를 나타내는 v(k)는 변수처럼 사용 가능.
  • 수학식에도 사용 가능.
>> v = [12 8 9 6 28];
>> v(3)

ans =
    9
>> v(3) = 80;       % 세 번째 원소의 값 변경
>> v(4) = v(3)/8+3  % 수학식을 이용한 네 번째 원소의 변경

v =
    12  8   80  13  28
>> VCT = [35 46 78 23 5 14 81 3 55]

VCT =
    35  46  78  23  5   14  81  3   55

>> VCT(4)   % 네 번째 원소를 출력함.

ans =
    23

>> VCT(6) = 273     % 여섯 번째 원소에 새로운 값을 할당함.

VCT =
      35 46 78 23 5 273 81 3 55

>> VCT(2)+VCT(8)    % 수학식에 벡터 원소를 사용함.

ans =
    49

>> VCT(5)^VCT(8)+sqrt(VCT(7))

ans =
    134


행렬 원소의 주소 지정

  • 행렬원소의 주소는 원소가 있는 행(row)과 열(column)의 위치를 말함.
  • 행렬 A에서 A(r, c)는 행렬 A의 r번째 행과 c번째 열에 위치한 원소를 나타냄.
>> A = [5 10 9 8;18 1 7 11;29 14 3 6];  % 3x4행렬을생성함.
>> A(3,1) =13       % 위치 (3,1)의 원소에 새로운 값을 할당함.

A =
    5   10  9   8
    18  1   7   11
    13  14  3   6

>> A(2,1) = A(2,1)-A(2,4)       % 수학식에 원소를 사용함.
A =
    5   10  9   8
    7   1   7   11
    13  14  3   6


클론(;)을 이용한 배열 접근

  • 콜론을 이용하여 벡터나 행렬의 일정 범위의 원소들을 지정할 수 있음.
  • v(:) : 벡터 v의 모든 원소를 열벡터로 나타냄.
  • v(m:n) : 벡터 v의 m 번째 원소에서 n 번째 원소까지의 원소들을 나타냄.
  • end는 벡터나 행렬의 마지막 원소의 주소를 나타내는 데 사용 → 벡터의 경우 end는 명령어 length(벡터)의 실행 결과와 같은 값을 가짐.
>> v = [10 20 30 40 50];
>> v(3)

ans =
    30

>> w = v(2:4)

w =
    20  30  40

>> length(v)

ans =
    5

>> v = [10 20 30 40 50];
>> x = v(2:end)

x =
    20  30  40  50

>> y = v(2:length(v))

y =
    20  30  40  50

>> v(3:end) = 0

v =
    10  20   0   0   0


콜론(;)을 이용한 벡터 주소 지정

  • 콜론을 이용하여 행렬 A의 일부 행이나 열을 지정할 수 있음.

A( :, n) : 행렬 A의 n번째 열(column)의 모든 원소를 가리킴. A(n, : ) : 행렬 A의 n번째 행(row)의 모든 원소를 가리킴. A(:, m:n) : 행렬 A의 m ~ n번째 열(column)의 모든 원소를 가리킴. A(m:n, :) : 행렬 A의 m ~ n번째 행(row)의 모든 원소를 가리킴. A(m:n, p:q) : m ~ n번째 행과 p ~ q번째 열에 해당하는 원소를 가리킴.

>> A = [2 4 13 9; 16 3 7 11;8 21 6 5];
>> C = A(2:3, 1:3)

C =
    16  3   7
    8   21  6

>> D = A(:, 2)

D =
    4   3
    2   1

>> E = A(1:2, :)

D =
    2   4   13  9
    16  3   7   11


반응형