獨斷論

행렬matrix와 배열array 만들기와 연산 (Matlab 사용법 1) 본문

과학과 기술/Matlab

행렬matrix와 배열array 만들기와 연산 (Matlab 사용법 1)

부르칸 2015. 3. 16. 18:20

행렬matrix와 배열array 만들기와 연산 (Matlab 사용설명서 1)

배열(array)이란 1차원 이상의 변수를 말하는데

특히 2차원 배열을 행렬matrix이라고 matlab에서는 규정하고 있다(수학에서는 그렇지 않다).


배열 생성

원소element가 4개인 일차원 배열을 만들려면 아래와 같이 한다.

이렇게하면 행벡터가 만들어진다. 

>> a = [1 2 3 4];
>> a
a =
     1     2     3     4

Console에서도 할수도 있고 Editor를 써서 m-file로 저장한 후에 console에서 실행해도 된다. 


열벡터를 만들려면 아래와 같이 한다. 

>> b = [1; 2; 3; 4];
>> b
b =
     1
     2
     3
     4


행렬은 아래와 같이 만든다.

>> c = [1 2 3; 4 5 6; 7 8 10];
>> c
c =
     1     2     3
     4     5     6
     7     8    10


보면 알겠지만 ; 처럼 생긴표시 즉 semi-colon은 배열의 행을 바꾸라는 의미이다. 


영벡터는 아래와 같이 만든다.

 >> d = zeros(6,2);
>> d
d =
     0     0
     0     0
     0     0
     0     0
     0     0
     0     0


배열의 연산

여기서는 간단한 연산만 알아보도록 한다. 

앞서 만든 변수 c에 10을 더해보자. c는 행렬이고 10은 scalar이다.

>> c + 10
ans =
    11    12    13
    14    15    16
    17    18    20

변수 c의 모든 원소에 10을 더하였다. 


전치행렬(tranpose matrix)를 구하려면 따옴표를 하면 된다. 물론 transpose()라는 함수를 사용할수도 있다.

>> c'
ans =
     1     4     7
     2     5     8
     3     6    10

>> transpose(c)
ans =
     1     4     7
     2     5     8
     3     6    10


역행렬(inverse matrix)inv()라는 함수를 이용한다.

>> ic = inv(c);
>> ic
ic =
   -0.6667   -1.3333    1.0000
   -0.6667    3.6667   -2.0000
    1.0000   -2.0000    1.0000


행렬의 곱셈은 그냥 별표를 한다.

>> c * ic
ans =
    1.0000         0   -0.0000
         0    1.0000         0
         0         0    1.0000

역행렬을 곱했더니 단위행렬이 나오는건 당연지사...ㅋ


만약 행렬의 곱셈을 하지 않고 원소(element)끼리 곱하고자 한다면 점별표(.*)을 사용한다.

>> c .* ic
ans =
   -0.6667   -2.6667    3.0000
   -2.6667   18.3333  -12.0000
    7.0000  -16.0000   10.0000


마찬가지로 각각의 element에 제곱을 하려면 아래와 같이 한다.

>> c .* 2;
>> c
c =
     1     2     3
     4     5     6
     7     8    10


행렬의 조작(Concatenation)은 직관적이라서 아주 쉽다.

앞서 만든 c라는 행렬과 그 역행렬 ic를 열방향 또는 수평방향으로 붙여보자.

>> cic = [c, ic]
cic =
    1.0000    2.0000    3.0000   -0.6667   -1.3333    1.0000
    4.0000    5.0000    6.0000   -0.6667    3.6667   -2.0000
    7.0000    8.0000   10.0000    1.0000   -2.0000    1.0000


물론 쉼표를 안해도 된다. 앞서 행렬을 만들때와 똑같다.

>> cic = [c ic]
cic =
    1.0000    2.0000    3.0000   -0.6667   -1.3333    1.0000
    4.0000    5.0000    6.0000   -0.6667    3.6667   -2.0000
    7.0000    8.0000   10.0000    1.0000   -2.0000    1.0000


그러면 행방향 즉 수직방향으로 ic를 c에 붙이려면?

그렇지... 세미콜론을 찍으면 된다. 

>> cic = [c; ic]
cic =
    1.0000    2.0000    3.0000
    4.0000    5.0000    6.0000
    7.0000    8.0000   10.0000
   -0.6667   -1.3333    1.0000
   -0.6667    3.6667   -2.0000
    1.0000   -2.0000    1.0000



Comments