operator01.jpg


안녕하세요? 오늘부터 'MATLAB 때려잡기'를 진행할 'lgs'입니다.
강의의 중요한 부분은 노란색으로 강조해 두었습니다.
그럼 바로 강의를 진행하겠습니다.

MATLAB은 저 코쟁이나라 쌀국 아메리카의 Math Works라는 회사에서 개발했다는니
스크립트 기반이기 때문에 C보다 실행 속도가 느리다느니...
뭐 알면 좋겠지만 알아봤자 그닥... -,.-  나는 이런것도 안다 이럴때나 쓰일 것 같군요..

그것보다 MATLAB = MATrix + LABoratory 이건 기억해둘만 합니다. 
여기서 중요한 키워드는 바로 바로 바로 바로~ Matrix (행렬)이 되시겠습니다.
MATLAB에서는 모든 것을 행렬을 기본으로 처리합니다.
MATLAB에서는 심지어 상수조차 1x1 행렬입니다.
행렬을 잘 다루기 위해서는 Linear Algebra(선형대수)에 대한 이해가 필수 입니다.
선형대수가 약하신 분들은 MIT OCW의 재미있는 스트랑 아저씨의 강의를 추천합니다.
(영어가 부담스러운 분들은 한국어 강의를 참조하세요. ^^ 서울대학교 선형대수 동영상 강의 )

행렬? 아놔 나는 행렬이 뭔지도 모르는데~
선형대수? 아~ 왠지 어려워 보인다 라고 생각하시는 분
그러나 걱정할 필요가 없슙니다. 바로 여러분의 교주 lgs가 있기 때문입니다.
면식수행 주침야활로 무한내공을 쌓은 lgs 교주만 믿고 따라오시면 여러분들은 자신도 모르는 사이에 어느덧 MATLAB의 고수가 되어있을 것입니다. 쿨럭



0101.png 

자 그럼 행렬이 무엇이냐?  (행렬을 알고계시면 skip하셔도 됩니다.)
행렬을 한자로 쓰면 가로행 行 세로렬 列 이 되겠습니다.
즉 행렬에서 '행'은 가로를 뜻하고 '렬'은 세로를 뜻합니다.
행렬을 한마디로 말하자면 숫자들이 가로 세로 줄을 맞추어 정렬되어있는 것입니다.
예를 들어 볼까요?

초등학교 교실에 줄을 맞추어 앉아 있은 애들도 행렬입니다.
저는 3분단 10번째 줄에 앉아서 공부했어요
여기서 3분단은 열(세로) 입니다. 10번째 줄은 행(가로)입니다.

아파트도 행렬이겠군요. 저는 104동 503호에 살고 있습니다.
104동은 세로(렬)입니다. 503호는 행(가로)입니다.

지도도 행렬이죠. 위도, 경도...
위도= 열(row), 경도 = 행(column)

시간표? 행렬이죠
요일 = column(세로), 교시 = row(가로)

바코드? 역시 1행 40렬 짜리 행렬입니다.

우리 주위의 무수한 것들이 행렬입니다.
이제 행렬이 무엇인지 감을 잡으셨나요?
이 행렬이라는 것이 공학, 수학, 물리학에서 굉장히 널리 쓰이며 유용하게 쓰입니다.
MATLAB은 이러한 행렬을 다루는데 최적화 되어 있습니다.

행렬의 크기를 말할 때는 3 x 3 ( '삼 바이 삼'으로 읽습니다) 이런 식으로 표현합니다. 
기억해두셔야 할 것은 행렬의 크기를 말할때 반드시 가로 크기가 먼져 온다는 것입니다. 
행렬이라고 말할 때  행이 먼져 나오죠? 그래서 가로가 먼저입니다.
위의 3 x 3 행렬에서 첫번째 3은 행렬의 행의 수(가로줄의 수)를 말 합니다.
그러면 뒤의 3은? 오~ 역시 똑똑하시군요 제 신도들 답습니다. 맞습니다~
바로 세로줄의 수를 말하는 거죠~
3 x 3 행렬이라고 하면 가로 세로의 크기가 3,3인 행렬을 말 하는거죠.



0102.png 

A라는 이름의 3 x 3 Matrix(행렬)에 대해서 좀더 알아보겠습니다.
Element : A matrix는 9개의 element가 있습니다. 8, 3, 4, 1, 5, 9, 6, 7, 2 이렇게 9개의 element가 있군요.
Row vector : 1행으로 만들어진 행렬에 특별한 이름을 붙였으니 그 이름은 바로 바로 바로 
row vector가 되겠습니다. 
첫번째 행인 [8 1 6] 은 크기가 1 x 3인 row vector가 되겠군요.
Column vector : 1렬로 만들어진 행렬에 특별한 이름을 붙였으니 그 이름은 바로 바로 바로 
column vector가 되겠습니다.
두번째 열인[1; 5; 9] 는 크기가 3 x 1인 column vector가 되겠군요.
element(무차원: 점) < vector(1차원:선) < matrix(2차원:평면) < array(3차원이상: 공간) 이라고 이해하시면 되겠습니다.



0103.png

A라는 matrix의 2행 3열에 있는 7이라는 element를 참조하고 싶다고 합시다.
MATLAB에서는 어떻게 해야할 까요?
우리가 알고 있는 것은 ① matrix의 이름, ② 몇번째 행, ③ 몇번째 열    이 3가지입니다.
MATLAB에서도 이 3가지의 정보를 가지고 element를 참조 합니다.
A(2,3) 라고 쓴것은 풀어서 말하면 "A라는 matrix의 2행 3열에 있는 숫자" 라는 말과 똑같습니다.
그럼 A(3,2)는 어떤 수를 가르키는 걸까요?
예 맞습니다."A라는 matrix의 3행 2열에 있는 숫자"  '9'를 가르키는 군요.
MATLAB에서는 위의 방법과는 다른 방법으로 element를 참조하는 방법을 제공합니다.
그냥 처음부터 번호를 죽~ 매기는 거죠.
프리젠테이션 자료를 잘 보세요. 어떤식으로 번호를 부여하는지 잘 보시기 바랍니다.
A(4) 라고 쓴것은  "A matrix의 4번째 element"라는 말과 똑같습니다.



자 그럼 MATLAB을 직접 실행시켜 봅시다.
(참고: 저는 MATLAB 2008b 버전으로 강으를 진행하겠습니다. 버전이 낮아도 상관 없습니다.)

b4d14fbcc7c31946356f5860e4affc8a.png
아 멋있는 logo가 지나가고 
a0aff824a5aa8d6b8da20fc1a38f0371.png
드디어 MATLAB이 실행되었습니다.
그냥 한번 둘러 볼까요? 음..
Command Window라는 것도 보이고 Command History라는 것도 보이고 Workspace라는 것도 보이는 군요.
왼쪽아래 Start 버튼도 보이구요 그 옆에 Ready라는 글자도 보입니다.
각각에 대해서는 지금 바로 여기서 설명을 하지 않고 차차 같이 실습을 하면서 설명드리겠습니다.
우리가 주로 놀 곳은 바로 바로 바로 Command Window 가 되겠습니다.
보이시나요? Command Window의 ">>"표시와 깜박이는 커서가!! 
커서가 깜박이는 것은 MATLAB이 명령을 받아들일 준비가 되었다는 것을 말합니다.
자 그럼 위에서 말했던 A라는 행렬(matrix)를 하나 만들어 봅시다.

e560e960b49504bc8edf2bdb7bb33eee.png

A라는 matrix를 입력하게 위해서 command window에서
>> A = [8 1 6 ; 3 5 7 ; 4 9 2]
라고 입력했습니다. 행렬을 입력하는 방법은 다음과 같습니다.

① 각각의 element들은 공백 이나 , 쉼표로 구분한다.
② 행과 행을 구분하기 위해 각 행의 끝에 세미콜론을 붙여 준다.
③ 행렬을 []로 묶어 준다


여기서 a = b 라는 것은 b의 값을 a에 대입하라라는 말과 같습니다.
( '=' 를 대입연산자라고 부릅니다. a=b는 a와 b가 같다는 말이 아닙니다. 
a와 b가 같다는 표현은 'a==b' 입니다)

방금 A라는 matrix를 만들었더니 몇가지가 바뀐것을 눈치 채셨을 겁니다
우선 Command History에 우리가 입력했던 것이 그대로 기록되는 군요.
그리고 Workspace에 A라는 이름의 martix가 하나 생긴것을 볼 수 있습니다.
workspace의 A를 더블 클릭해 보세요.
cc145fe9c24756944db14dc066cb2f20.png
Variable Editor가 나타날 것입니다.
Excel과 똑같죠? 숫자를 입력하거나 변경할 수 있습니다.

Variable Editor를 닫고 Command Window에서 위에서 배웠던 A(2,3)을 입력해보죠
>>A(2,3)
ans =
      7

이라고 나오셨나요?
ans는 아무런 대입연산자가 없을때 기본적으로 계산 값이 저장되는 곳입니다.

행렬의 크기도 한번 보고 넘어 갈까요?
>> size(A)
ans = 
   3   3

예상한 것 처럼 3 x 3 의 값을 돌려주는 군요.

>> clc
>> clear
라고 입력해 보세요. 화면이 깨끗해지고 workspace의 변수도 없어 졌을 것입니다.
clc : command window를 깨끗이 지웁니다. (clc: clear command window의 약자입니다)
clear : workspace의 모든 변수를 지웁니다.(특정 변수만을 지우고자 할 때는 clear 다음에 변수명을 적습니다)
(중요!! matlab은 대문자와 소문자를 구분합니다) 


clc 라는 명령어에 대해서 더 알고 싶다고요?

>> help clc
라고 입력해보세요. matlab에서 가장 많이 쓰이는 명령어가 아마 help인것 같습니다. 
모든 명령어를 외울 수도 없고 help만 잘 써도 반은 먹고 들어가는 겁니다.
lookfor 명령어는 다음에 설명 드리죠


이번에는 Command History에서 A=[8 1 ...] 이 항목을 Command Window로 drag & drop 그리고 enter. 
또는 History에서 A=[8 1 ...] 항목을 더블클릭  해보세요. 
이해가 가시나요? Command History의 항목을 다시 쓸수 있습니다.
command window에선 윗쪽 화살표(↑)를 누르면 여러분이 입력했던 항목이 차례로 다시 나오는 것을 보실 수 있습니다.

>>exit
exit : matlab을 종료합니다.
profile