Basic Operations
Disp(a);  -> 출력창에 출력. 
Disp(sprintf(‘2 decimals: %0.2f’, a))
A = [1 2; 3 4; 5 6]
V = 1:0.1:2 -> V를 1부터 0.1씩증가해서 2까지 차례대로 넣는 1*11 행렬을 만든다.
v = 1:6 -> V를 1부터 6까지 1씩증가시키는 1*6 행렬을 만든다.
C = 2*ones(2,3) -> 2*3 행렬인데 값 모두 2가 된다.
W = zeros(1, 3)
W = rand(1, 3) -> 0~1 사이의 랜덤값.
W = randn(1, 3) -> 평균 0이고, 분산또는 표준편차가 1인 가우스분포로부터 가져온 3개의 값이 됨.
Hist(w)-> 막대그래프를 그림
hist(w, 50) -> 막대가 50개인 그래프임.
Eye(4) -> 4*4의 단위 행렬이 된다.


Moving Data Around
A = [1 2; 3 4; 5 6]
Sz = Size(A)
Size(Sz)

Size(A, 1) -> 3
Size(A, 2) -> 2
v = [1 2 3 4]
Length(v) -> 4
Length(A) -> 3 (가장 긴 차원을 찾는다)

Pwd : 현재 디렉초리 또는 octave가 위치한 현재 경로
Cd : 폴더 이동.
Ls : 현재 디렉토리 파일 나열.
Load 파일이름.
Who : octave workspace에 어떤 변수들이 있는지 보여줌  
Whos : 변수에 대한 상세보기
Clear 변수명 : 변수를 없앰(변수명 없으면 모든 변수 지움)
v = priceY(1:10) -> 1~10번째의 벡터를 할당함
Save hello.mat v; -> v를 파일로 저장
Save hello.txt v -ascii -> txt파일로 저장하고 아스키 인코딩을 사용해서 사람이 인식가능하도록 함

A(3,2) -> 3행 2열에 있는 데이터를 찾음.
A(2,:) -> 두번째행을 전부 가져욤 ‘:’ 은 모든 row or column을 의미함 

A([1 3], 1행과 3행의 모든 row를 가져옴. 

A(:, 2) = [10; 11; 12]  대입 연산도 가능
A = [A, [100; 101; 102] -> A는 3*2 행렬인데 3*3행렬로 바뀜

A(:)  -> A에 있는 모든 원소를 하나의 열 vector로 넣으라는뜻, 3*3이었는데 9*1이 됨

C = [A B] or [A, B] -> A와B는 3*2 이었으니까 C는 3*4가 됨
C = [A; B] -> ;는 행렬 아래에 넣겠다는 거니까 C는 6*2가 됨.

Computing on Data
A*C 는 행렬곱이고
A .* B 는 element wise 곱이다. 
A .^2 는 A에 A를 element wise 곱을 한것이다. 
1 ./ V, log(V), exp(V), abs(V), sum(V)  -v  등을 사용하여 산술연산을 할 수 있다. 
v + ones(length(v), 1)
v + 1 
A` -> ` 는 left quate이다. A행렬을 transpose 한다.
Max(A)
[va, ind] = max(a) -> ind에는 index값이 들어간다. 

A = 
1  2
3  4
5  6 
일때, max(A)는 5  6 이다. 

B = 1  15  2  0.5
일때, B < 3은  1  0  1  1 이다. 
Find(B<3) 은  1  3  4 이다. (조건에 해당되는 index 값이 표현된다.)

A = magic(3)  -> 3*3의 어느 방향으로 더해도 합이 같은 행렬을 만들어 준다.(머신러닝에서는 안쓴다.)
8  1  6
3  5  7
4  9  2

[r, c] = find(A >= 7) -> r은 해당 조건에 맞는 행, c는 열 index를 나타낸다. 
R = 
1
3
2
C =
1
2
3

prod(B) = 15 -> 모든 element의 곱이다. 
Floor(B) = 1 15 2 0 -> 내림
Ceil(B) = 1 15 2 1 -> 올림이다.

Rand(3) -> 3*3 의 랜덤값을 갖는 행렬이다.
Max(rand(3), rand(3)) -> 각각의 3*3 랜덤 행렬의 element-wise-max를 취한 3*3행렬이 나온다. 

Max(A, [], 1)  -> 8 9 7
: []은 행렬을 반환하라는 뜻 같고, 1은 열에서 max값을 취하라는 뜻이다. 
Max(A, [], 2) ->
8
7
9
:  2는 행에서 max 값을 취하라는 뜻이다. 
Max(A)만 쓰면 default로 Max(A, [], 1)과 똑같이 실행된다.
Max(Max(A)) 로 해야 A의 최대값 9가 나온다.
Max(A(:))로 해도 위와 똑같은 결과가 나온다.

똑같은 방식으로 sum(A, 1), sum(A, 2)를 사용한다. 
Sum(sum(A .* eye(9)))를 하면 대각선의 합이 나온다. 
Sum(sum(A .* flipud(eye(9)))) -> flipud는 행의 위치를 반전시킨다. 그래서 오른쪽 위에서 왼쪽 아래로 내려가는 1 행렬이 나온다. 그래서 이 수식은 A의 오른쪽 위에서 왼쪽 아래로 내려가는 대각선 element의 합이 나온다. 

Pinv(A) -> A의 역행렬을 구해준다.

Plotting Data
Plot(x축, y축)

Plot(x, y1) 
Hold on; -> 지금 떠 있는 그래프를 그대로 둔다.
Plot(x, y2, ‘r’) -> 이 그래프를 지금 떠있는 그래프 위에 빨간색으로 그린다. 
xLabel(’time’)  -> x축 이름을 넣는다.
YLabel(‘value’) -> y축 이름을 넣는다.
Legend(’sin’, ‘cos’) -> 첫번째 그래프 이름을 ’sin’, 두번째는 ‘cos’으로 넣는다.
Title(‘my plot’) -> 제목을 my plot으로 넣는다.
Print -dpng ‘myplot.png’ ->  현재 디렉토리에 png 이미지로 저장
Close -> 그래프 닫힘

Figure(1); plot(x, y1)
Figure(2); plot(x, y2)

Subplot(1, 2, 1); -> plot을 1*2로 나누고 1번째 plot에 접근한다.
Plot(x, y1); -> 앞에서 subplot으로 1번째 plot에 접근상태 이기 때문에 해당 그래프가 왼쪽에 그려진다.
Subplot(1, 2, 2); -> 2번째 subplot에 접근한다.
plot(x, y2); -> 2번째 subplot에 접근상태이기 때문에 해당 그래프가 오른쪽에 그려진다. 
Axis([0.5  1  -1  1]) -> 현재 2번째 subplot에 접근중이기 때문에 2번째 plot의 보여지는 x축 범위를 0.5~1, y축 범위를 -1~1로 변경한다. 
Clf; -> 현재 떠있는 그래프를 지움.


Control Statements: for, while, if statement
For i = 1:10,
    v(i) = 2^I;
End;

Indices = 1:10;
For i=indices,
    Disp(i)
End; 
-> 1 2 3 4 5 6 7 8 9 10

While true,
    v(i) = 999;
    I = I+1;
    If I == 6,
        Break;
    End;
End;

If v(1) == 1,
     Disp(’The value is one’);
Else if v(1) == 2,
    Disp(’The value is two’);
Else
    Disp(’The value is not one or two.’);
End;

squareThisNumber.m 파일 내용
Function y = squareThisNumber(x)
y = x^2;

살행: squareThisNumber(5)

Add path(‘C:\Users\and\Desktop’) 로 파일이 있는 위치를 추가해 놓으면 해당 폴더로 이동하지 않아도 함수를 호출할 수 있다. 

squareAndCubeThisNumber.m 파일내용
Function [y1, y2] = squareAndCubeThisNumber(x)
Y1 = x^2;
Y2 = x^3;

실행: [a, b] = squareAndCubeThisNumber(5);


costFunctionJ.m 파일 내용
Function J = costFunctionJ(X, y, theta)

M = size(X, 1);  %number of training examples
Predictions = X*theta;
sqrErrors = (predictions-y).^2;

J = 1/(2*m) * sum(sqrErrors);

실행: 
X = [1 1; 1 2; 1 3];
Y = [1; 2; 3];
Theta = [0; 1];
J = costFunctionJ(x, y, theta) 


'Machine Learning > Coursera 강의' 카테고리의 다른 글

Logistic Regression Model  (0) 2017.11.14
Multivariate Linear Regression  (0) 2017.11.14
Introduction, Cost Function, Gradient Descent  (0) 2017.11.14
Posted by 홍성곤
,