본문 바로가기
ETC

[머신러닝 앤드류응] (Week2) 5. 매트랩 튜토리얼 (3) 행렬 계산

by bigpicture 2021. 4. 11.
반응형

앤드류 응 교수님의 코세라 머신러닝 강의를 요약하는 글입니다. Week2 의 상세 목차는 아래와 같습니다.

Week2 목차

1. Environment Setup Instructions (환경 설정)
2. Multivariate Linear Regression (다변량 선형 회귀)
3. Computing Parameters Analytically (해석적으로 파라미터 구하기)
4. Submitting Programming Assignments (프로그래밍 숙제)
5. Octave/Matlab Tutorial (옥타브/매트랩 튜토리얼)


이번 글은 Week2의 5강인 Octave/Matlab Tutorial (옥타브/매트랩 튜토리얼) 요약입니다.


Week2 

5. Octave/Matlab Tutorial (옥타브/매트랩 튜토리얼)

(1) Basic Operations
(2) Moving Data Around
(3) Computing on Data
(4) Plotting Data
(5) Control Statements: for, while, if statement
(6) Vectorization


(3) Computing on Data

행렬 A,B,C를 아래와 같이 정의합시다. 

>> A=[1 2; 3 4; 5 6]
A =

   1   2
   3   4
   5   6

>> B=[11 12; 13 14; 15 16;]
B =

   11   12
   13   14
   15   16

>> C=[1 1;2 2]
C =

   1   1
   2   2


1) 행렬의 곱셈

곱하기 기호를 이용합니다. 

>> A*C
ans =

    5    5
   11   11
   17   17

 

 

2) 행렬 요소끼리 곱셈

.* 연산자를 사용합니다. 

>> A.*B
ans =

   11   24
   39   56
   75   96

 

 

3) 행렬 각 요소의 거듭제곱

.^숫자 연산자를 사용합니다. 

>> A.^2
ans =

    1    4
    9   16
   25   36

 

 

4) 행렬 요소의 역수

./ 연산자를 사용합니다. 

>> 1 ./ A
ans =

   1.00000   0.50000
   0.33333   0.25000
   0.20000   0.16667

 

 

5) 행렬 요소의 로그

>> log(A)
ans =

   0.00000   0.69315
   1.09861   1.38629
   1.60944   1.79176

 

 

6) 행렬 요소의 지수

>> exp(A)
ans =

     2.7183     7.3891
    20.0855    54.5982
   148.4132   403.4288

 

 

7) 행렬 요소의 절댓값

>> abs(A)
ans =

   1   2
   3   4
   5   6

 

 

8) 행렬 요소의 반대부호

>> -A
ans =

  -1  -2
  -3  -4
  -5  -6

 

 

9) 행렬 요소 1씩 늘리기

>> A+1
ans =

   2   3
   4   5
   6   7

 

 

10) 전치행렬 구하기

' 기호 사용

>> A'
ans =

   1   3   5
   2   4   6

 

 

11) 벡터 요소의 최댓값 구하기

>> a=[1 2 3 4];
>> max(a)
ans =  4

 

 

12) 벡터 요소의 최댓값과 위치 구하기

>> a=[1 2 3 4];
>> [val,ind]=max(a)
val =  4
ind =  4

 

 

 

13) 행렬에 max함수를 적용하면?

열별 최댓값을 반환함

>> max(A)
ans =

   5   6

 

 

14) 행렬 요소에 부등호 연산자 적용

논리값 0,1 을 반환

>> A<3
ans =

  1  1
  0  0
  0  0

 

 

15) 행렬에서 부등식이 참인 위치 반환

>> A
A =

   1   2
   3   4
   5   6

>> find(A<3)
ans =

   1
   4


순서는 열방향으로.

 


16) 행,열,대각선의 합이 동일한 행렬 만들기

>> magic(3)
ans =

   8   1   6
   3   5   7
   4   9   2

magic(2)는 정의되지 않음.

 

 

17) 행렬에서 부등식이 참인 위치를 행과 열로 반환

>> A
A =

   1   2
   3   4
   5   6

>> [r,c]=find(A <3)
r =

   1
   1

c =

   1
   2

 

 

18) 벡터 원소의 합

>> v=[1 2 3];
>> sum(v)
ans =  6

 

 

 

19) 행렬에 sum 함수를 적용하면?

열별 합을 구해줌

>> A
A =

   1   2
   3   4
   5   6

>> sum(A)
ans =

    9   12

 

 

20) 벡터 모든 원소의 곱

>> v=[1 2 3];
>> prod(v)
ans =  6

 

 

21) 행렬에 prod 함수를 적용하면?

열별 곱을 구해줌

>> prod(A)
ans =

   15   48

 

 

22) 버림

>> v=[1.3 1.6 1.2 1.7];
>> floor(v)
ans =

   1   1   1   1

 

 

23) 올림

>> v=[1.3 1.6 1.2 1.7];
>> ceil(v)
ans =

   2   2   2   2

 

 

24) 반올림

>> v=[1.3 1.6 1.2 1.7];
>> round(v)
ans =

   1   2   1   2

 

 

25) 두 행렬 원소의 최댓값으로 이루어진 행렬 생성

>> A
A =

   1   2
   3   4
   5   6

>> B
B =

   11   12
   13   14
   15   16

>> max(A,B)
ans =

   11   12
   13   14
   15   16

 

 

26) 행렬에서 행방향 최댓값 구하기

>> A
A =

   1   2
   3   4
   5   6

>> max(A,[],2)
ans =

   2
   4
   6

 

 

27) 행렬 원소의 최댓값 구하는 법

>> max(A(:))
ans =  6

 

 

28) 행렬의 열 방향 합 구하기

>> A
A =

   1   2
   3   4
   5   6

>> sum(A,1)
ans =

    9   12

 

 

29) 행렬의 행 방향 합 구하기

>> sum(A,2)
ans =

    3
    7
   11

 

 

30) 행렬의 대각선 요소만 남기기

>> M=magic(6)
M =

   35    1    6   26   19   24
    3   32    7   21   23   25
   31    9    2   22   27   20
    8   28   33   17   10   15
   30    5   34   12   14   16
    4   36   29   13   18   11

>> M.*eye(6)
ans =

   35    0    0    0    0    0
    0   32    0    0    0    0
    0    0    2    0    0    0
    0    0    0   17    0    0
    0    0    0    0   14    0
    0    0    0    0    0   11

 

 

31) 행렬 위아래로 뒤집기

>> M
M =

   35    1    6   26   19   24
    3   32    7   21   23   25
   31    9    2   22   27   20
    8   28   33   17   10   15
   30    5   34   12   14   16
    4   36   29   13   18   11

>> flipud(M)
ans =

    4   36   29   13   18   11
   30    5   34   12   14   16
    8   28   33   17   10   15
   31    9    2   22   27   20
    3   32    7   21   23   25
   35    1    6   26   19   24

 

 

32) 의사역행렬 구하기

>> M1=magic(3)
M1 =

   8   1   6
   3   5   7
   4   9   2

>> pinv(M1)
ans =

   0.147222  -0.144444   0.063889
  -0.061111   0.022222   0.105556
  -0.019444   0.188889  -0.102778

>> pinv(M1)*M1
ans =

   1.0000e+00   2.0817e-16  -3.1641e-15
  -6.1062e-15   1.0000e+00   6.2450e-15
   3.0531e-15   4.1633e-17   1.0000e+00

 

반응형

댓글