IT

옥타브(Octave) 프로그래밍 튜토리얼 (2) - 데이터 이동(Moving Data Around)

유병혁 2015. 12. 1. 01:32

본 글은 코세라 머신러닝(Machine Learning)을 수강하면서 일부 내용을 정리한 것입니다.
강의 사이트: https://www.coursera.org/learn/machine-learning 

이번에는 데이터 이동과 관련된 연산을 정리해 보도록 하겠습니다.

먼저, 아래와 같이 행렬 A를 만들어 보겠습니다.

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

 

size() 함수는 행렬의 행과 열 개수를 반환해 줍니다.

>> size(A)
ans =
   3   2
>> sz = size(A);
>> size(sz)
ans =
   1   2

 

아래와 같이 size() 함수의 열 값을 지정하여 반환할 수도 있습니다.

>> size(A, 1)
ans =  3
>> size(A, 2)
ans =  2

 

length() 함수는 주어진 값이 행렬인 경우, 행과 열 개수 중 더 큰 값을 반환해 줍니다.

>> v = [1 2 3 4];
>> length(v)
ans =  4
>> length(A)
ans =  3
>> length([1;2;3;4;5])
ans =  5

 

이번에는 load() 함수를 사용하여 ex1data1.txt 파일을 열고 size() 함수를 적용해 보도록 하겠습니다.

>> load ex1data1.txt
>> load('ex1data1.txt')
>> size(ex1data1)
ans =
   97    2

 

보다 상세하게 현재 변수들의 정보를 확인하는 방법은 who와 whos가 있습니다.

>> who
Variables in the current scope:
ans       ex1data1
>> whos
Variables in the current scope:
   Attr Name          Size                     Bytes  Class
   ==== ====          ====                     =====  =====
        ans           1x2                         16  double
        ex1data1     97x2                       1552  double
Total is 196 elements using 1568 bytes

 

ex1data1의 일부를 v 변수로 지정하고 save() 함수를 사용하여 별도 파일로 저장해 보겠습니다.

여기서 *.mat는 바이너리(binary) 포맷이고, *.txt는 아스키(ASCII) 포맷입니다.

>> v = ex1data1(1:10, 1)
v =
   6.1101
   5.5277
   8.5186
   7.0032
   5.8598
   8.3829
   7.4764
   8.5781
   6.4862
   5.0546
>> save hello.mat v
>> save hello.txt v

 

다음은 콜론(:)을 이용하여 행렬 값을 설정하는 케이스들입니다.

>> A = [1 2; 3 4; 5 6]
A =
   1   2
   3   4
   5   6
>> A(3, 2)
ans =  6
>> A(2, :)
ans =
   3   4
>> A(:, 2)
ans =
   2
   4
   6
>> A(:, :)
ans =
   1   2
   3   4
   5   6
>> A([1 3], :)
ans =
   1   2
   5   6
>> A(:, 2) = [10; 11; 12]
A =
    1   10
    3   11
    5   12
>> A = [A, [100; 101; 102]]
A =
     1    10   100
     3    11   101
     5    12   102
>> A(:)
ans =
     1
     3
     5
    10
    11
    12
   100
   101
   102

 

아래 식들은 행렬을 합치는 예제입니다. 간단하죠?!  

>> A = [1 2; 3 4; 5 6];
>> B = [11 12; 13 14; 15 16];
>> C = [A B]
C =
    1    2   11   12
    3    4   13   14
    5    6   15   16
>> [A, B]
ans =
    1    2   11   12
    3    4   13   14
    5    6   15   16
>> C = [A; B]
C =
    1    2
    3    4
    5    6
   11   12
   13   14
   15   16