본문 바로가기
컴퓨터 언어/Matlab

MATLAB 기초 3. 벡터 및 행렬 연산 ( \ , / , .*, .^ , size(), reshape(), length() )

by SuperMemi 2021. 3. 8.
반응형

↓2021/03/05 - [Computer Language/Matlab] - MATLAB 기초 2. 벡터와 행렬 생성과 슬라이싱

 

MATLAB 기초 2. 벡터와 행렬 생성과 슬라이싱

앞선글에서는 MATLAB의 기초적인 변수와 내장함수에 대해서 다루었다. 2021/03/05 - [Computer Language/Matlab] - 1. MATLAB 의 기초 - 변수, 내장 함수, 관계 및 논리 연산자 1. MATLAB 의 기초 - 변수, 내장 함..

supermemi.tistory.com


3-1 행렬의 전치(Transpose)

 

MATLAB 에서는 행렬의 전치를 위하여 프라임(')을 사용한다.

 

 


3-2 행렬의 덧셈과 뺄셈

 

+, - 연산자를 이용하여 연산이 가능하며, 두 행렬의 크기가 같아야 연산이 가능하다.

 

 


3-3 행렬의 곱셈

 

 * 연산자를 사용하며, 앞 행렬의 열의 크기와 뒷 행렬의 행의 크기가 동일해야 한다.

다시말해 m x n 행렬과 n x p 행렬의 순서 곱은 가능하지만, 반대 순서는 불가능하다.

 

 


3-4 행렬의 나눗셈

 

 

MATLAB에서는 행렬의 나눗셈을 위해 좌측 연산자 \(역슬레시)와 우측연산자 /를 제공한다.

 

행렬 A가 역행렬을 갖는 정방 행렬이면 선형 방정식 Ax=b 의 해 x를 구하기 위해 좌측 나눗셈(\)을 사용하며, 우측 나눗셈(/)xA = b 의 해를 구하기 위해 사용한다.

 

A * x = b  →  x = A \ b
x * A = b  →  x = b / A

 


 

예를 들어, 아래의 연립방정식의 해를 구한다고 생각해 보자.

 

a+2b = 5

3a+4b = 11

 

행렬 A = [1 2;3 4] 가 될 것이고, 결과 벡터 b = [5;11]이 될 것이다.

 

이때 x = [a;b]를 구해야 하는데 식으로 나타내면,

 

A*x = b

x = A\b 를 통해 구할 수 있다.

 

x = [1;2] 라는 결과가 나왔다. 대입해보면 사실임을 알 수 있을 것이다.

 


그냥 실수에 좌즉나눗셈(\)을 사용한다면, 어떻게 연산이 될까?

 

 

1/2 는 우측나눗셈(/)을 사용하여 뒤쪽 숫자분모가 되어 나눗셈이 진행된다.

 

반대로 1\2는 좌측나숫셈(\)을 사용하여 앞쪽 숫자분모가 된다.

 


3-5 element 연산

 

각 원소(element)끼리 곱하거나 나누기 또는 거듭제곱을 하고자 할 경우에는 사용하고자 하는 연산자 앞에 . 연산자를 붙여야 한다.

 

 

이때, element 거듭제곱(A.^2) 행렬 거듭제곱(A^2) 을 구분할 필요가 있다!!

 

element 거듭제곱(A.^2) 은 각 요소들을 제곱하는 것을 말한다.

 

반대로 행렬 거듭제곱(A^2) 은 정사각 행렬일때 똑같은 행렬을 곱하는 것을 말한다.

 

 


3-6 기타 행렬 연산 함수 (size, length, reshape)

 

size(A) : 행렬(A)의 크기를 반환한다.

length(A) : 행렬(A)의 행 수와 열 수를 비교하여 큰 값을 출력한다.

reshape(A, n, m) : 행렬(A)을 n x m 행렬로 변환시킨다. 이때 열우선 순서로 반환된다.

 

 

이때 주의할 점은 행렬이 reshape을 통해 바뀔때, 기존의 원소들이 열 우선 순으로 바뀐다는 것이다.


열 우선 순이라는 말이 무엇인지 생각해보자.

 

위의 예시에서 2 x 3 행렬 A는

첫째 행이 1 2 3, 둘째 행이 4 5 6 인 원소로 구성되어 있다.

 

이를 열을 기준으로 생각해보면,

첫째 열이 1 4, 둘째 열이 2 5, 셋째 열이 3 6으로 구성되어 있다.

 

이를 reshape함수를 사용하여 6 x 1 행렬로 바꾸면 어떻게 될까?

 

열을 기준으로 생각했을때 첫째 열의 원소 부터 순서대로 열에 채워진다.

 

1 4 2 5 3 6

 

 

위의 예시들을 바탕으로 다시 한번 생각해보거나 직접 몇번만 해보면 어떤 의미인지 이해 할 수 있을 것이다.


2021/03/08 - [Computer Language/Matlab] - MATLAB 기초 4. 입출력 ( disp( ), fprintf( ), fscanf( ) )

 

MATLAB 기초 4. 입출력 ( disp( ), fprintf( ), fscanf( ) )

2021/03/08 - [Computer Language/Matlab] - MATLAB 기초 3. 벡터 및 행렬 연산 ( \ , / , .*, .^ , size(), reshape(), length() ) MATLAB 기초 3. 벡터 및 행렬 연산 ( \ , / , .*, .^ , size(), reshape(), len..

supermemi.tistory.com


참고도서

 

MATLAB을 이용한 알기 쉬운 수치해석. 박태희 지음. 생능출판


 

반응형