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 |