본문 바로가기
MATLAB

두 번째

by 파치카 2020. 7. 10.

MATLAB의 큰 매력 중 하나는 벡터와 매트릭스 계산이 쉽다는 것이다.

 

첫번째에서 본 5와 8같이 숫자 하나만 있는 1 X 1 매트릭스를 스칼라,

 

[1 2 3] 혹은 [1;2;3] 처럼 n X 1 혹은 1 X n 같은 매트릭스를 벡터,

 

[1 2 3; 4 5 6] 처럼 n X n 매트릭스를 매트릭스 라고 한다.

 

MATLAB에서 벡터나 매트릭스를 나타낼 때 숫자를 [ ] 안에다가 쓴다.

 

예를 들어

 

벡터 [1 2 3 4 5 6] 이렇게 MATLAB에 넣으면

 

 



 

이렇게 나온다.

 

매트릭스도 비슷한데

 

1 2 3

4 5 6

 

이런 매트릭스를 나타내려면

 

[1 2 3 

 

이 상태에서 엔터를 치면

 

[1 2 3

4 5 6]

 

이렇게 쓸수가 있고 다른 방법은

 

[1 2 3; 4 5 6]

 

이렇게 행을 바꿔야 하는 곳에 ; 를 넣어주면 된다.

 

나는 주로 ; 를 쓰는데 편한대로 하면 될 듯.

 

 

보는 바와 같이 같은 값으로 나온다.

 

벡터 사칙연산은 일반 사칙연산과 다를게 없는데

 

곱셈과 나눗셈은 조금 다르다.

 

가령, [1 2 3] * [4 5 6] 이라고 MATLAB에 넣으면

 

 

이런 에러가 뜨는데 이유는 알다시피

 

행렬의 곱은 [a X b] * [c X d] 처럼 b 와 c 의 값이 같아야 한다.

 

근데 [1 2 3] 과 [4 5 6]의 경우엔 같이가 않기 때문에 이런 에러가 나는 것.

 

이럴 때엔 * 앞에 . 을 붙여줘야 한다.

 

 

[1 2 3] 과 [4;5;6] 의 곱일 경우엔 . 을 붙이지 않아도 된다.

 

MATLAB은 기본적으로 가로벡터로 나타낸다. 세로벡터로 나타내기 위해선 [4;5;6] 처럼 행을 바꿀 때마다 ; 를 붙여줘야 하는데

 

큰 벡터나 매트릭스의 경우, 다 적기엔 시간이 오래 걸릴 것이다.

 

다행히도 MATLAB은 그런 가로벡터에서 세로벡터로 쉽게 바꿔주는 커맨드가 있는데

 

그건 바로 ' 이다.

 

벡터나 매트릭스 뒤에 ' 만 붙여주면

 

벡터의 경우, 가로에서 세로 벡터로, 혹은 세로에서 가로벡터로

 

매트릭스의 경우, 행을 열로, 열을 행으로 바꿔준다.

 

예를 들어 매트릭스 [1 2 3; 4 5 6; 7 8 9] 를 입력하면

 

1 2 3

4 5 6

7 8 9

 

라는 결과 값이 나오는데

[1 2 3; 4 5 6; 7 8 9]' 라고 입력을 하면

 

1 4 7

2 5 8

3 6 9

 

라는 결과 값이 나온다.

 

 

 

 

 

몰라도 되지만 MATLAB으로 랜덤 벡터, 매트릭스를 나타낼 수가 있다.

 

rand 라는 커맨드가 있는데 이 커맨드는 0 에서 1 사이의 아무 숫자를 결과 값으로 나타낸다.

 

rand(n) 을 넣으면 n X n 매트릭스가 나오고

 

rand(n,m) 을 넣으면 n X m 매트릭스가 나온다.

 

예전에 숙제 중에서 주사위게임 만드는 게 있었는데

 

그걸 rand 커맨드로 하는 것이었다.

 

rand(n) 만 쓰면 0.xxxx 의 숫자로 결과값이 나오는데

 

이것을 round, floor 혹은 ceil 커맨드를 이용해서 자연수로 만드는 것이다.

 

예를 들어서 round(rand(3)*3+5) 라고 MATLAB에 넣으면

 

5 에서 8 사이의 랜덤 자연수를 결과값으로 나타낸다.

 

rand(3)*3 은 0 에서 3 사이의 아무 유리수를 보여주는데 거기에 + 5 를 하면 5 에서 8의 유리수

 

round 커맨드를 이용해서 유리수를 자연수로 바꿔주는 거다.

 

이런 식으로 조금만 계산 알고리즘을 이용하면 원하는 숫자 범위 내에서 랜덤 숫자를 마음껏 나타내기가 가능하다.

 

 

 

 

 

 

 

막상 적고 나니까 내용이 알차지 않은 거 같다.

 

기초라서 그런가. 그치만 기초가 가장 중요한데.

'MATLAB' 카테고리의 다른 글

네 번째  (0) 2020.07.10
세 번째  (0) 2020.07.10
글 옮기는 중  (0) 2020.07.10
첫 번째  (0) 2020.07.10
MATLAB  (0) 2020.07.10

댓글