본문 바로가기
Machine Learning

13. [실습] Octave/Matlab Tutorial

by 대소니 2016. 7. 13.


앞에서 Octave를 설치하였으니 이제 간단한 사용법에 대해서 알아보겠습니다.

교수님의 강의에서 실제로 명령어들을 직접 실행하면서 보여주시기에 명령어를 순서대로 나열해서 정리하려고 합니다.

그러므로 직접 Octave에서 순서대로 실행을 하시면서 이해하시면 좋을 것 같습니다.


각 명령어 옆에 %는 주석이고 주석에 간단히 설명을 달아놓았습니다.



1. Octave Basic Operations


1 == 2                % 1과 2가 같은 값이면 true(1) 아니면 false(0)

1 ~= 2                % 1과 2가 같지 않으면 true(1) 아니면 false(0)

1 && 0               % and 연산

1 || 0                  % or 연산

xor(1,0)              % xor 연산

ps1(‘>> ‘);           % 프롬프트 변경하기

a = 3

a = 3;                  % 세미콜론은 출력안함

b = ‘hi’;

a = pi

disp(a);

disp(sprintf(‘ 2 decimals : %0.2f, a))

format long                                         % 이후 값을 long타입으로 출력

format short                                        % 이후 값을 short타입으로 출력


A = [ 1 2; 3 4; 5 6]    % A Vector 선언

V = [1 2 3]

V = [1; 2; 3;]

v = 1:0.1:2         % 1에서 2까지 0.1씩 증가하면서 생성

v = 1:6

ones(2,3)

C = 2*ones(2,3)

w = ones(1,3)

w = zeros(1,3)    % 0의 값으로 생성(초기화)

w = rand(1,3)

rand(3,3)

w = -6 + sqrt(10) * (randn(1,10000));

hist(w)

hist(w,50)

eye(4)                % Identity Vector

I = eye(6)

help eye            % 도움말

help help




2. Moving Data Around


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

size(A)

sz = size(A)

size(sz)

size(A,1)

v = [1 2 3 4]

length(v)

length(A)

length([1;2;3;4;5])


pwd                        % 현재 디렉토리 위치

cd ‘C:\Users\ang'    % 디렉토리 변경

ls                            % 현재 디렉토리 파일 목록


load featuresX.dat    % featuresX.dat 파일 불러오기

load priceY.dat

load(‘featuresX.dat’)


who                        % 현재 선언되어 사용이 가능한 변수 목록

featuresX                % featuresX Matrix 보기

size(featuresX)

whos


v = priceY(1:10)

save hello.met v;        % v matrix를 hello.met의 이름으로 파일 저장


clear                            % workspace 초기화

whos

who


load hello.met

v

save hello.txt v -ascii     % text(ASCII) 파일로 저장


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

A(3,2)

A(2,:)                                 % “:” means every element along that row/column

A(:,2)

A([1 3], : )

A(:,2) = [10;11;12]

A = [A, [100;101;102]];       % append another column vector to right

size(A)

A(:)                                     % put all elements of A into a single vector


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

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

C = [A B]                            % matrix 조합하기

C = [A; B]

size(C)

[A, B]



3. Computing on Data


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

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

C = [1 1; 2 2]

A .*B                                % dot(.) 연산은 각 요소들끼리의 연산이 됨

A .^2

v = [1; 2; 3;]

1 ./v

1 ./A

log(v)

exp(v)

abs(v)

abs([-1; 2; -3])

-v                                       % -1 * v와 동일

v + ones(length(v),1)

length(v)

ones(3,1)

v + ones(3,1)                      % 더하기 연산

v + 1

v


A

A'                                        % Matrix Transpose

(A’)'

a = [1 15 2 0.5]

val = max(a)                        % max 값

[val, ind] = max(a)               % max인 값과 index

max(A)


a < 3                                    % 3보다 작은면 true

find(a < 3)                           % 3보다 작은 값 찾기

A = magic(3)

help magic


[r,c] = find(A >= 7)               % r = row, c = column 의 index

A(2,3)


sum(a)

prod(a)

floor(a)

ceil(a)

rand(3)

max(rand(3), rand(3))

max(A,[],1)                            % A matrix에 대한 column(1)별 max값

max(A,[],2)                           % A matrix에 대한 row(2)별 max값

max(A)

max(max(A))

A(:)

max(A(:))


A = magic(9)                        % 9x9 matrix 임의값으로 생성

sum(A,1)

sum(A,2)

eye(9)

A.*eye(9)

sum(sum(A.*eye(9)))

sum(sum(A.*flipup(eye(9)))

flipup(eye(9)


A = magic(3)

pinv(A)                                % Inverse matrix

temp = pinv(A)

temp * A                             % Indentity matrix



Plotting Data


t=[0:0.01:0.98];

y1 = sin(2*pi*4*t);

plot(t,y1);                            % plot : 그래프로 표현

y2 = cos(2*pi*4*t);

plot(t,y2);

hold on;                              % 현재 그래프의 값들을 대기상태로 놓고 변경하기 위하여 사용 (hold off)

plot(t,y2,’r’);

xlabel(‘times’)                      % x축 label지정

ylabel(‘value’)                      % y축 label지정

legend(‘sin’, ‘cos’)                % 범례 지정

title(‘my plot’)                     % 그래프 title 지정

cd ‘C:\users\ang’; print -dpng ‘myplot.png'

help plot

close                                    % 그래프 창 닫기

figure(1); plot(t,y1);              % 그래프 창 이름 지정

figure(2); plot(t,y2);

subplot(1,2,1);                       % Divides plot a 1x2 grid, access  first element

plot(t,y1);

subplot(1,2,2);

plot(t,y2);

axis([0.5 1 -1 1])                    % x축, y축의 눈금 제한 지정

help axis

clf;                                        % 그래프 초기화 


A = magic(5)

imagesc(A)                            % 값을 image로 표기

imagesc(A), colorbar, colormap gray;

A(1,2)

A(4,5)

imagesc(magic(15)), colorbar, colormap gray;


a=1, b=2, c=3                         % comma chain

a=1; b=2; c=3;




4. Control Statements; for, while, if statement


v = zeros(10,1)

for i=1:10,                % for 반복문

     v(i) = 2^i;

end;

v

indices=1:10;

indices

for i=indices,

     disp(i);

end;

v

i=1;

while i<=5,               % while 반복문

     v(i) = 100;

     i=i+1;

end;

v


i=1;

while true,

     v(i)=999;

     i=i+1l

     if i ==6,                % if 조건문

          break;

     end;

end;

v


v(1)

v(1) = 2;

if v(1)==1,                                                    % if else 조건문

     disp(‘The value is one’);

elseif v1) == 2,

     disp(‘The value is two’);

else

     disp(‘The value is not one or two’);

end;


squareThieNumber(5)                                    % 현재 디렉토리에 .m파일이 있으면 해당 파일의 함수를 사용가능함

pwd

cd ‘C:\Users\ang\Desktop'

squareThisNumber(5)

addpath(‘C:\Users\ang\Desktop’)                   % path추가


[a,b] = squareAndCubeThisNumber(5);

a

b

x=[1 1; 1 2; 1 3]

y=[1; 2; 3;]

theta=[0;1];

j = costFunctionJ(x,y,theta)

theta=[0;0];

j = costFunctionJ(x,y,theta)

(1^2 + 2^2 + 3^2)/ (2*3)

댓글