온라인 강의 플랫폼 코세라의 창립자인 앤드류 응 (Andrew Ng) 교수는 인공지능 업계의 거장입니다. 그가 스탠퍼드 대학에서 머신 러닝 입문자에게 한 강의를 그대로 코세라 온라인 강의 (Coursera.org)에서 무료로 배울 수 있습니다. 이 강의는 머신러닝 입문자들의 필수코스입니다. 인공지능과 머신러닝을 혼자 공부하면서 자연스럽게 만나게 되는 강의입니다.
옥타브 프로그램에서 행렬과 벡터를 다음과 같이 계산할 수 있습니다.
% The ; denotes we are going back to a new row.
A = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12]
결과는 다음과 같습니다.
A =
1 2 3
4 5 6
7 8 9
10 11 12
% Initialize a vector
v = [1;2;3]
결과는 다음과 같습니다.
v =
1
2
3
% Get the dimension of the matrix A where m = rows and n = columns
[m, n] = size(A)
결과는 다음과 같습니다.
m = 4
n = 3
% You could also store it this way
dim_A = size(A)
결과는 다음과 같습니다.
dim_A =
4 3
% Get the dimension of the vector v
dim_v = size(v)
결과는 다음과 같습니다.
dim_v =
3 1
% Now let's index into the 2nd row 3rd column of matrix A
A_23 = A(2,3)
결과는 다음과 같습니다.
A_23 = 6
옥타브 프로그램에서 행렬과 벡터를 다음과 같이 계산합니다.
% Initialize matrix A and B
A = [1, 2, 4; 5, 3, 2]
B = [1, 3, 4; 1, 1, 1]
결과는 다음과 같습니다.
A =
1 2 4
5 3 2
B =
1 3 4
1 1 1
% Initialize constant s
s = 2
결과는 다음과 같습니다.
s = 2
% See how element-wise addition works
add_AB = A + B
결과는 다음과 같습니다.
add_AB =
2 5 8
6 4 3
% See how element-wise subtraction works
sub_AB = A - B
결과는 다음과 같습니다.
sub_AB =
0 -1 0
4 2 1
% See how scalar multiplication works
mult_As = A * s
결과는 다음과 같습니다.
mult_As =
2 4 8
10 6 4
% Divide A by s
div_As = A / s
결과는 다음과 같습니다.
div_As = 0.50000 1.00000 2.00000
2.50000 1.50000 1.00000
% What happens if we have a Matrix + scalar?
add_As = A + s
결과는 다음과 같습니다.
add_As =
3 4 6
7 5 4
옥타브 언어에서 행렬과 벡터를 다음과 같이 나타냅니다.
% Initialize matrix A
A = [1, 2, 3; 4, 5, 6;7, 8, 9]
결과는 다음과 같습니다.
A =
1 2 3
4 5 6
7 8 9
% Initialize vector v
v = [1; 1; 1]
결과는 다음과 같습니다.
v =
1
1
1
% Multiply A * v
Av = A * v
결과는 다음과 같습니다.
Av =
6
15
24
옥타브 언어에서 행렬과 벡터를 다음과 같이 나타냅니다.
% Initialize a 3 by 2 matrix
A = [1, 2; 3, 4;5, 6]
결과는 다음과 같습니다.
A =
1 2
3 4
5 6
% Initialize a 2 by 1 matrix
B = [1; 2]
결과는 다음과 같습니다.
B =
1
2
% We expect a resulting matrix of (3 by 2)*(2 by 1) = (3 by 1)
mult_AB = A*B
결과는 다음과 같습니다.
mult_AB =
5
11
17
옥타브 언어에서 행렬과 벡터를 다음과 같이 나타냅니다.
% Initialize random matrices A and B
A = [1,2;4,5]
B = [1,1;0,2]
결과는 다음과 같습니다.
A =
1 2
4 5
B =
1 1
0 2
% Initialize a 2 by 2 identity matrix
I = eye(2)
결과는 다음과 같습니다.
I =
Diagonal Matrix
1 0
0 1
항등 행렬을 아래 같은 코드로 작성해도 동일한 값을 얻는다
% The above notation is the same as
I = [1,0;0,1]
% What happens when we multiply I*A?
IA = I*A
결과는 다음과 같습니다.
IA =
1 2
4 5
% How about A*I?
AI = A*I
결과는 다음과 같습니다.
AI =
1 2
4 5
% Compute A*B
AB = A*B
결과는 다음과 같습니다.
AB =
1 5
4 14
% Is it equal to B*A?
BA = B*A
BA =
5 7
8 10
(5) 번과 (6) 번의 과정을 통해 행렬 곱셈의 교환 법칙은 성립하지 않는다.
% Note that IA = AI but AB != BA
옥타브 언어에서 행렬과 벡터를 다음과 같이 나타냅니다.
% Initialize matrix A
A = [1,2,0;0,5,6;7,0,9]
결과는 다음과 같습니다.
A =
1 2 0
0 5 6
7 0 9
% Transpose A
A_trans = A'
결과는 다음과 같습니다.
A_trans =
1 0 7
2 5 0
0 6 9
% Take the inverse of A
A_inv = inv(A)
결과는 다음과 같습니다.
A_inv =
0.348837 -0.139535 0.093023
0.325581 0.069767 -0.046512
-0.271318 0.108527 0.038760
% What is A^(-1)*A?
A_invA = inv(A)*A
결과는 다음과 같습니다.
A_invA =
1.00000 -0.00000 0.00000
0.00000 1.00000 -0.00000
-0.00000 0.00000 1.00000