이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

배열 연산과 행렬 연산

소개

MATLAB®에는 두 가지 유형의 산술 연산, 즉 배열 연산과 행렬 연산이 있습니다. 산술 연산은 예를 들어 두 수의 합, 배열 요소의 거듭제곱, 두 행렬의 곱과 같은 수치 계산을 수행합니다.

행렬 연산은 선형 대수 규칙을 따릅니다. 반면에, 배열 연산은 요소별 연산을 수행하고 다차원 배열을 지원합니다. 마침표(.)는 배열 연산과 행렬 연산을 구분합니다. 그러나, 덧셈과 뺄셈에서는 행렬 연산과 배열 연산이 동일하므로 문자 쌍 .+.-는 필요하지 않습니다.

배열 연산

배열 연산은 벡터, 행렬, 다차원 배열의 대응 요소에 대해 요소별 연산을 수행합니다. 피연산자의 크기가 동일한 경우 첫 번째 피연산자의 각 요소는 두 번째 피연산자에 있는 동일한 위치의 요소와 대응합니다. 피연산자의 크기가 서로 호환되는 경우 각 입력값은 다른 피연산자의 크기와 일치시키기 위해 필요한 만큼 암시적으로 확장됩니다. 자세한 내용은 기본 연산에 대해 호환되는 배열 크기 항목을 참조하십시오.

간단한 예로, 크기가 동일한 두 개의 벡터는 더할 수 있습니다.

A = [1 1 1]
A =

     1     1     1
B = [1 2 3]
B =

     1     2     3
A+B
ans =

     2     3     4

피연산자가 하나는 스칼라이고 다른 하나는 스칼라가 아닐 경우, MATLAB은 다른 피연산자와 동일한 크기가 되도록 스칼라를 암시적으로 확장합니다. 예를 들어, 스칼라와 행렬의 요소별 곱을 계산할 수 있습니다.

A = [1 2 3; 1 2 3]
A =

     1     2     3
     1     2     3
3.*A
ans =

     3     6     9
     3     6     9

다음과 같이 3x3 행렬에서 1x3 벡터를 뺄 경우에도 두 크기가 서로 호환되므로 암시적 확장이 가능합니다. 뺄셈을 수행하면, 벡터가 3x3 행렬이 되도록 암시적으로 확장됩니다.

A = [1 1 1; 2 2 2; 3 3 3]
A =

     1     1     1
     2     2     2
     3     3     3
m = [2 4 6]
m =

     2     4     6
A - m
ans =

    -1    -3    -5
     0    -2    -4
     1    -1    -3

행 벡터와 열 벡터는 크기가 서로 호환됩니다. 1x3 벡터를 2x1 벡터에 더하는 경우 MATLAB이 요소별 덧셈을 수행하기 전에 각 벡터가 2x3 행렬로 암시적으로 확장됩니다.

x = [1 2 3]
x =

     1     2     3
y = [10; 15]
y =

    10
    15
x + y
ans =

    11    12    13
    16    17    18

두 피연산자의 크기가 호환되지 않는 경우에는 오류가 발생합니다.

A = [8 1 6; 3 5 7; 4 9 2]
A =

     8     1     6
     3     5     7
     4     9     2
m = [2 4]
m =

     2     4
A - m
Matrix dimensions must agree.

다음 표에는 MATLAB의 배열 산술 연산자에 대한 요약이 나와 있습니다. 함수 관련 정보를 보려면 마지막 열에 있는 함수 도움말 페이지 링크를 클릭하십시오.

연산자

용도

설명

함수 도움말 페이지

+

덧셈

A+BAB를 더합니다.

plus

+

단항 플러스

+AA를 반환합니다.

uplus

-

뺄셈

A-BA에서 B를 뺍니다.

minus

-

단항 마이너스

-AA의 요소를 부정(Negate)합니다.

uminus

.*

요소별 곱셈

A.*BAB의 요소별 곱입니다.

times

.^

요소별 거듭제곱

A.^B는 요소 A(i,j)B(i,j) 거듭제곱으로 구성된 행렬입니다.

power
./

우측 배열 나눗셈

A./B는 요소 A(i,j)/B(i,j)로 구성된 행렬입니다.

rdivide

.\

좌측 배열 나눗셈

A.\B는 요소 B(i,j)/A(i,j)로 구성된 행렬입니다.

ldivide

.'

배열 전치

A.'A의 배열 전치입니다. 복소수 행렬의 경우 켤레화 없이 전치를 수행합니다.

transpose

행렬 연산

행렬 연산은 선형 대수의 규칙을 따르며 다차원 배열과 호환되지 않습니다. 입력값 간에 필요한 차원은 연산에 따라 다릅니다. 비 스칼라 입력값의 경우 일반적으로 행렬 연산자는 대응되는 배열 연산자와는 다른 답을 계산합니다.

예를 들어, 행렬 오른쪽 나눗셈 연산자 /를 사용하여 두 행렬을 나눌 경우 행렬에 포함된 열의 수가 동일해야 합니다. 그러나, 행렬 곱셈 연산자 *를 사용하여 두 행렬을 곱할 경우 행렬은 공통적인 내부 차원(Inner Dimension)을 가져야 합니다. 즉, 첫 번째 입력값의 열 개수는 두 번째 입력값의 행 개수와 같아야 합니다. 행렬 곱셈 연산자는 다음 공식을 통해 두 행렬의 곱을 계산합니다.

C(i,j)=k=1nA(i,k)B(k,j).

두 행렬의 곱을 계산하여 이를 확인할 수 있습니다.

A = [1 3;2 4]
A =

     1     3
     2     4
B = [3 0;1 5]
B =

     3     0
     1     5
A*B
ans =

     6    15
    10    20

위의 행렬 곱셈 결과는 아래의 요소별 곱셈 결과와 일치하지 않습니다.

A.*B
ans =

     3     0
     2    20

다음 표에는 MATLAB의 행렬 산술 연산자가 간략히 설명되어 있습니다. 함수 관련 정보를 보려면 마지막 열에 있는 함수 도움말 페이지 링크를 클릭하십시오.

연산자

용도

설명

함수 도움말 페이지

*

행렬 곱셈

C = A*B는 행렬 AB의 선형 대수 곱입니다. A의 열 개수는 B의 행 개수와 같아야 합니다.

mtimes

\

행렬 왼쪽 나눗셈

x = A\B는 방정식 Ax = B의 해입니다. 행렬 AB의 행 개수는 동일해야 합니다.

mldivide

/

행렬 오른쪽 나눗셈

x = B/A는 방정식 xA = B의 해입니다. 행렬 AB의 열 개수는 동일해야 합니다. 왼쪽 나눗셈 연산자 측면에서 B/A = (A'\B')'입니다.

mrdivide

^

행렬 거듭제곱

B가 스칼라인 경우 A^BAB 거듭제곱입니다. B가 그 밖의 다른 값인 경우 계산에 고유값과 고유벡터가 포함됩니다.

mpower

'

켤레 복소수 전치

A'A의 선형 대수 전치입니다. 복소수 행렬의 경우 이는 켤레 복소수 전치입니다.

ctranspose

관련 항목