[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) 계산하기 (직류, 교류 단상, 교류 삼상)

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

[PLC] 채터링 현상과 입력 필터

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

[python] 파이썬 pyplot 2차원 그래프 샘플 코드

[PLC] 래더 다이어그램과 PLC

공압회로 기호

[PLC] PLC 입출력 타입 - 싱크 & 소스 (Sink & Source)

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