본 글은 코세라 머신러닝(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