MATLAB에서 취급되는 모든 데이터형은 기본적으로 행렬(matrix)이다. 스칼라(scalar)값은 1☓1차원의 행렬이고 벡터는 n☓1차원의 행렬이다. 일반적으로 수학 교재에서 그냥 벡터라 하면 열벡터(column vector)를 의미하는 경우가 많다. 이 책에서도 앞으로 그냥 벡터라고 하면 열벡터를 의미하는 것으로 한다. 심지어 문자열도 그 문자 각각의 아스키(ASCII)코드값의 행렬(벡터)로 표시하며 다항식은 계수들의 행렬(벡터)로 표시한다. 함수에 넘겨주는 입력 파라메터도 행렬이고 함수의 수행 결과 생성되는 출력값도 역시 행렬이다. 앞으로 다음과 같이 구분하도록 하겠다. (m,n은 양의 정수)

       ① 스칼라 : 1x1차원의 행렬

       ② 벡터 : nx1차원의 행렬 (행벡터 : 1xn 차원 행렬)

       ③ 행렬 : mxn 차원의 행렬

 이제 행렬을 저장하는 변수를 만드는 기본적인 방법을 설명한다. MATLAB에 행렬을 입력하는 방법의 하나는 원소들을 대괄호 안에 입력하는 것으로 각 원소들은 공란 또는 콤마로 분리되어야 한다. 예를 들어 다음과 같은 행렬은

아래와 같이 한 줄에 입력할 수 있다.


>> A = [1.2 10 15; 3 5.5 2; 4 6.8 7] 󰎠
A =
1.2000 10.0000 15.0000
3.0000 5.5000 2.0000
4.0000 6.8000 7.0000


위에서 보듯 행렬의 원소들을 대괄호 안에 입력해야한다. 모든 행의 원소들은 공란 또는 ‘,’로 분리되어야 하며, 마지막 행을 제외한 각 행의 끝은 세미콜론으로 구분한다.


 크기가 큰 행렬은 몇 개의 입력 줄로 펼쳐서 나타낼 수 있다. 예를 들어 다음과 같은 행렬 B를 생각해보자.

이 행렬은 다음과 같은 네 줄로 나눠서 입력할 수 있다.

>> B = [1.5630 2.4572 3.1113 4.1051;
3.2311 1.0000 2.5000 3.2601;
1.0000 2.0000 0.6667 0.0555;
0.2345 0.9090 1.0000 0.3333];


여기서 ‘]’뒤에 세미콜론 ‘;’를 사용하였는데 끝에 세미콜론을 할 경우 처리 결과를 출력하지 않는다. 또한 각행의 마지막에 세미콜론 ‘;’을 사용하였는데, 이것을 생략하여도 같은 행렬로 입력된다.

※ 다른 언어(C/C++/JAVA/C# 등등)와 달리 MATLAB에서는 하나의 명령어 끝에 반드시 세미콜론 ‘;’을 붙여야 하는 것은 아니다. MATLAB의 명령 줄의 끝에 세미콜론 ‘;’ 을 붙이면 명령을 수행한 결과 값을 화면에 표시하지 않으며 세미콜론을 붙이지 않으면 명령을 수행한 결과 값을 화면에 표시한다. 명령어들 간에 구분을 하기 위해서는 콤마‘,’를 사용하며 세미콜론으로도 명령어들을 구분하나 바로 앞의 명령어의 출력을 억제한다. 다음 예를 보자.

>> a=1, b=2; c=3 󰎠
a =
1
c =
3


 이미 만들어진 행렬을 이용하여 새로운 행렬을 만들 수도 있다.


>> A1=[A; 11 22 33]
A1 =
   1.2000   10.0000   15.0000
   3.0000    5.5000    2.0000
   4.0000    6.8000    7.0000
  11.0000   22.0000   33.0000


이 예에서는 이미 만들어진 행렬 A를 이용하여 A행 밑에 한 행을 추가하여 새로운 행렬 A1을 생성하였다.


[그림 1]  행렬 A1의 구조


새로운 열을 A행렬 오른편에 추가하고 싶다면 다음과 같이 하면 된다.


>> B=[0.5; 2; 100] 󰎠
B =
0.5000
2.0000
100.0000
>> A2=[A B] 󰎠
A2 =
1.2000 10.0000 15.0000 0.5000
3.0000 5.5000 2.0000 2.0000
4.0000 6.8000 7.0000 100.0000


또는 다음과 같이 한 번에 같은 일을 수행할 수도 있다.


>> A2 = [A [0.5; 2; 100] ]
A2 =
1.2000 10.0000 15.0000 0.5000
3.0000 5.5000 2.0000 2.0000
4.0000 6.8000 7.0000 100.0000


 다른 예로 A행렬을 두 번 이용하여 다음과 같이 새로운 AA라는 행렬을 만들 수도 있다.

>> AA=[A A]
AA =
   1.2000   10.0000   15.0000    1.2000   10.0000   15.0000
   3.0000    5.5000    2.0000    3.0000    5.5000    2.0000
   4.0000    6.8000    7.0000    4.0000    6.8000    7.0000

 

위에서 행렬 A를 옆으로 나란히 붙어서 새로운 행렬 AA를 만들었다. 또는


>> AA2=[A; A]
AA2 =
   1.2000   10.0000   15.0000
   3.0000    5.5000    2.0000
   4.0000    6.8000    7.0000
   1.2000   10.0000   15.0000
   3.0000    5.5000    2.0000
   4.0000    6.800      7.0000


위에서는 행렬 A를 밑으로 나란히 붙어서 새로운 행렬 AA2를 만들었다. 위와 같이 기존에 생성된 행렬들을 합성하여 새로운 행렬을 만들 때는 그 행렬들의 차원에 주의해야 한다. 다음의 예를 보자.


>> A=[1 2; 3 4] 󰎠
A =
1 2
3 4
>> B=[5 6 7;8 9 10; 10 11 12] 󰎠
B =
5 6 7
8 9 10
10 11 12
>> AB=[A B] 󰎠
오류 내용 : 행렬에서 dimension이나 type이 일치하지 않습니다.
>> AB_=[A; B] 󰎠
오류 내용 : 행렬에서 dimension이나 type이 일치하지 않습니다.

 

두 행렬을 옆으로 연결할 때는 행수가 같아야 하고 밑으로 붙일 때는 열수가 같아야 한다. 그렇지 않으면 위와 같이 오류가 발생한다.



Posted by 살레시오
,