[GNU Octave - 무료 매트랩] 벡터(행렬) 다루기 팁 (2)

행렬 선언

GNU Octave에서 행렬을 아래와 같이 선언할 수 있습니다.

>> B=[8 7; 6 7; 5 4]
B =

   8   7
   6   7
   5   4

>> C=[2:4; 5:7; 7:9]
C =

   2   3   4
   5   6   7
   7   8   9


행렬 사이즈

행렬의 사이즈는 아래와 같이 구할 수 있습니다.

>> size(B)
ans =

   3   2

>> size(B,1) % size of first-dimension
ans = 3
>> size(B,2) % size of second-dimension
ans = 2


size() 함수의 두번째 인자로 사이즈를 확인하고자 하는 차원을 명시할 수 있습니다.


size() 함수의 반환값은 바로 변수에 할당할 수도 있습니다.

>> [rows cols] = size(B)
rows = 3
cols = 2


전치행렬

전치행렬은 아래와 같이 작은 따옴표로 구할 수 있습니다.

>> D = [1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15]
D =

    1    2    3    4    5
    6    7    8    9   10
   11   12   13   14   15

>> size(D)
ans =

   3   5

>> D'
ans =

    1    6   11
    2    7   12
    3    8   13
    4    9   14
    5   10   15

>> size(D')
ans =

   5   3


만약 행렬이 복소수로 이루어져 있다면 켤레복소수의 전치행렬(complex conjugate transpose)이 반환됩니다.

>> E = [1+1i 2+4i; 3-4i 5-3i]
E =

   1 + 1i   2 + 4i
   3 - 4i   5 - 3i

>> E'
ans =

   1 - 1i   3 + 4i
   2 - 4i   5 + 3i


켤레복소수가 아닌 일반 전치행렬을 구하기 위해서는 아래와 같이 transpose() 함수를 사용합니다.

>> E
E =

   1 + 1i   2 + 4i
   3 - 4i   5 - 3i

>> transpose(E)
ans =

   1 + 1i   3 - 4i
   2 + 4i   5 - 3i


일행렬 (Matrix of ones)과 영행렬 (Matrix of zeros)

아래와 같이 0 또는 1로만 구성된 행렬을 구할 수 있습니다.

>> ones(3,5)
ans =

   1   1   1   1   1
   1   1   1   1   1
   1   1   1   1   1

>> zeros(3,5)
ans =

   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0


기존 행렬과 동일한 사이즈의 0 또는 1 행렬을 구하기 위해서는 아래와 같이 size() 함수와 같이 사용합니다.

>> D
D =

    1    2    3    4    5
    6    7    8    9   10
   11   12   13   14   15

>> ones(size(D))
ans =

   1   1   1   1   1
   1   1   1   1   1
   1   1   1   1   1

>> zeros(size(D))
ans =

   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0


단위행렬(Identity Matrix)

단위행렬은 아래와 같이 eye() 함수를 이용합니다.

>> eye(4)
ans =

Diagonal Matrix

   1   0   0   0
   0   1   0   0
   0   0   1   0
   0   0   0   1


대각행렬(Diagonal Matrices)

대각행렬은 아래와 같은 절차로 생성할 수 있습니다.

>> d = [34, 45, 64]
d =

   34   45   64

>> diag(d)
ans =

Diagonal Matrix

   34    0    0
    0   45    0
    0    0   64


위 diag() 함수 예시에서 벡터 d 대신 행렬을 대입하면 해당 행렬의 대각행렬 위치에 있는 항목의 열벡터를 반환받을 수 있습니다.

>> sym=[1 3 5 7; 3 2 4 8; 5 4 3 9; 7 8 9 4]
sym =

   1   3   5   7
   3   2   4   8
   5   4   3   9
   7   8   9   4

>> diag(sym)
ans =

   1
   2
   3
   4


diag() 함수를 이용하면 비대각원소(off-diagonal elements)를 다룰 수 있습니다.

>> d = [2:5]
d =

   2   3   4   5

>> D = diag(d,1)
D =

   0   2   0   0   0
   0   0   3   0   0
   0   0   0   4   0
   0   0   0   0   5
   0   0   0   0   0

>> D = diag(d,-1)
D =

   0   0   0   0   0
   2   0   0   0   0
   0   3   0   0   0
   0   0   4   0   0
   0   0   0   5   0


기존 행렬을 이용하여 행렬을 정의(확장)

기존의 행렬을 이용하여 새로운 행렬을 정의할 수 있습니다.

>> p = [2:4; 4:2:9; 10 11 12]
p =

    2    3    4
    4    6    8
   10   11   12

>> [diag(1:3) p; zeros(3) p']
ans =

    1    0    0    2    3    4
    0    2    0    4    6    8
    0    0    3   10   11   12
    0    0    0    2    4   10
    0    0    0    3    6   11
    0    0    0    4    8   12


행렬의 특정 행벡터나 열벡터 추출하기

>> C
C =

   2   3   4
   5   6   7
   7   8   9

>> C(:,2)
ans =

   3
   6
   8

>> C(2,:)
ans =

   5   6   7


끝.

댓글

이 블로그의 인기 게시물

[PLC] PLC 아날로그 입출력 기본

전력(kW) 계산하기 (직류, 교류 단상, 교류 삼상)

NPN, PNP 트랜지스터 차이점

커패시터에 저장된 에너지 계산

3선 결선식 센서의 타입 PNP, NPN

3상 모터 전력에서 전류 계산하기 (How to Convert Three-Phase Power to Amps)

[아두이노] 가변저항(Potential Divider)과 전압분배(Voltage Divider)

제너 다이오드에 저항을 연결하는 이유

[공압밸브] 5포트 2웨이 & 4포트 2웨이, 단동 VS 복동 차이점

공압 속도 제어: 미터인 vs 미터아웃