Loading [MathJax]/jax/output/CommonHTML/jax.js
본문 바로가기

Octave: Utility

1. 주석

#

%

한 줄 주석

 

%{

%}

여러 줄 주석, % 대신 # 써도 됨

 

 

 

2. 문자열

문자열은 작은 따옴표(')나 큰 따옴표(")로 감싸면 된다.

 

 

 

3. 크기

size() 함수와 length() 함수가 있는데 약간 다르다.

둘 다 행렬 또는 벡터의 차원을 반환하지만 size()와 달리 length()는 차원을 지정할 수 없고 가장 긴 차원을 반환한다.

 

LetAis3×4matrixandvis5×1vector

size(A,1)=3

size(A,2)=4

length(A)=4

 

행렬에서 1차원은 행, 2차원은 열이다.

 

rows() 함수와 cols() 함수는 각각 주어진 행렬의 행 길이, 열 길이를 반환한다.

row(A)size(A,1)과 같고 cols(A)size(A,2)와 같다.

 

 

 

3. 프롬프트 변경

위와 같이 바꿀 수 있다. 다른 함수들과 달리 이름이 대문자다.

PS1()의 매개변수에 새롭게 설정할 프롬프트명을 문자열로 주면 된다.

기본 프롬프트는 명령어를 입력할 때마다 octave: 옆에 숫자가 늘어난다.

 

 

4. 행렬 연산

1. 콜론(:)

A=[12345678910111213141516]

A(2,:)

A(:,1)

A([13],:)

A(1:3,:)

A(:,1:3)

A(:)

 

 

주의할 점은 A(:)의 행 순이 아닌 열 순으로 붙는다는 것.

즉 첫 번째 열 밑에 두 번째 열이 붙고, 그 밑에 세 번째 열이 붙는 식으로 전체 요소를 열 벡터로 만든다.

 

2. 요소 단위 연산

기본 연산자 (+,,,/,^) 앞에 .을 붙이면 해당 연산이 각 요소에 대해 개별적으로 이루어진다.

예를 들어

 

A=[1234]

 

에 대해

 

A.^2

=[1^22^23^24^2]

$\;=\;\begin{bmatrix} 1 & 4 \\ 9 & 16 \end{bmatrix}$

 

이다.

 

[1234]×[1234]=[7101522]가 아니다.

 

또한 행렬끼리도 연산이 가능한데, 예를 들면 다음과 같다.

 

A=[1234],B=[4567]

A.+B=[1+42+53+64+7]=[57911]

 

<행렬 - 스칼라>

 

<행렬 - 행렬>

 

cf.

A.^B

=[1^42^53^64^7]

$\;=\;\begin{bmatrix} 1 & 32 \\ 729 & 16384 \end{bmatrix}$

 

 

5. 그 밖에 행렬 관련 함수

eye(n)

n×n 항등 행렬을 만든다.

항등 행렬로 쓰이는 I의 발음과 영단어 eye의 발음이 같은 걸 이용한 유머인 것 같다...

 

magic(n)

n×n 마방진 행렬을 만든다.

사실 마방진 자체가 필요한 경우는 거의 없고 정방행렬을 만들 때 쓰는 편이다.

 

find(CONDITION)

주어진 조건에 맞는 인덱스를 반환한다.

find(A>=10)

A를 열 기준으로 늘어놨을 때 인덱스를 기준으로 10 이상의 요소의 인덱스를 반환한다.

즉 A(:)와 같이 1, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15, 4, 8, 12, 16에서

13, 10, 14, 11, 15, 12, 16의 인덱스인 4, 7, 8, 11, 12, 15, 16이 열 벡터로 반환된다.

 

[rc]=find(A>=15)

r에는 주어진 조건에 맞는 요소의 행 인덱스가, c에는 열 인덱스가 열 벡터의 형태로 할당된다.

A에서 15보다 크거나 같은 요소는 1516이고 이들의 인덱스는 각각 (4,3), (4,4)다.

따라서 r=[44], c=[34]다.

 

 

 

sum(A)

주어진 행렬의 합을 반환하며, size() 함수처럼 차원을 지정해줄 수 있다.

또한 행렬의 전체 요소 합은 sum(sum(A))로 구할 수 있다.

sum(A)

모든 행의 합을 반환한다.

[1234]

+[5678]

+[9101112]

+[13141516]

=[28323640]

가 된다.

 

sum(A,1)

첫 번째 차원의 합을, 즉 행의 합을 반환한다.

 

sum(A,2)

두 번째 차원의 합을, 즉 열의 합을 반환한다.

[15913]+[261014]+[371115]+[481216]=[10264258]

 

prod(A)

주어진 행렬의 곱을 반환하며, size() 함수처럼 차원을 지정해줄 수 있다.

또한 행렬의 전체 요소 합은 prod(prod(A))로 구할 수 있다.

기타 사용법은 sum()과 동일하다.

 

 

ceil(A),floor(A)

A의 모든 요소를 올림, 버림한 결과를 반환한다.

 

max(A)

각 열에서 가장 큰 요소를 행렬로 반환한다.

1열의 최대값은 8, 2열의 최대값은 9, 3열의 최대값은 7이므로 반환은 [897]이 된다.

행렬 전체의 최대값은 max(max(A))로 구할 수 있다.

 

 

'Machine Learning' 카테고리의 다른 글

Octave: 제어문  (0) 2021.02.27
Octave: 기본적인 연산  (0) 2021.02.23