[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
끝.
댓글
댓글 쓰기