2hOfo4LKe5cqsjpQsO19ZVOBydfHat_7ZsM4FZVx_y_NPgwwmC5OnzAMQUrJZ8iydlji5q-g-KpZBmtqCHm8alnmua7rzfKwP5ous9r3bJCGJITzcDU


안녕하세요? lgs입니다.
오늘은 연산자(operator)에 대해서 알아보겠습니다.
먼저 MATLAB 실행하시구요 matrix 2개를 만들어 줍니다.

>> A = magic(2)
A = 
   1    3
   4    2
>> B = [ 1 2 ; 3 4]
B = 
   1    2
   3    4

우선 아래 수식들을 잘 봐주세요.
(글자가 잘 안보이시면 그림을 클릭해서 크게보세요)


JYyuXbhwfrW2nMWvbjRB2Uti8cKP1tklRT4Kn3VXfqQktuRBSJ-kHfR1D-QbYxV8WpZGJlJO5G4SirdlPGcrrIoTklkucwD9kpCMDFd959mACfwBodU

자 여기까지 문제없죠? 주의할 점은 더하거나 빼는 두 행렬의 크기가 같아야 한다는 것 뿐입니다.

SnMcQMba1ebZoBtWQQKBStuQ7Z67y0RLFVUuAdWzcidpvxNKeUgKwP36SP7flFJn1FGm8DvrBS6vi1qaVmHreH4yqA9gEC_l5lilBm-TMCq1MekozZs

여기도 문제없습니다. 각각의 element 전체에 사칙연산을 할 수 있습니다.

4WSJeQ9dpfg6wUbuS1FFpG6ygIrDKwRNkmfmSSMRDOk2BZKHCws64eeZ4hMky4zo2_TO-VOjPkaV0_FI0taIJMjlJsasWP0ZlfCbePeT7Lu-fA1SUKo


행렬과 행렬에서 * 연산자는 내적(inner product) 연산자 입니다. 
곱하는 두 행렬의 크기는 (n x m) * (m x k) = (n x k) 이어야 합니다.
행렬과 행렬에서 / 연산자는 역행렬을 곱하는 연산자 입니다. 
A/B = A*inv(B) 입니다. (inv는 역행렬을 구하는 함수입니다.) 두 행렬은 크기가 같고 정방행렬이어야 합니다.
행렬과 행렬에서 \(한글 키보드에서는 backslash가 \로 나옵니다) 연산자는 . A\B = inv(A)*B 입니다.
^ 연산자도 문제 없습니다.
\(backslash) 만 빼면 고등학교 수학 수준이군요. 이해 다 되시죠? 어려운건 없습니다.


이제부터가 하이라트이니 정신 바짝 차리고 보세요.



님이라는 글자에 점하나를 찍으면 쿵짝~♬ ^^ 
단지 연산자 앞에 점(.)을 하나 찍었을 뿐인데 결과가 엄청나게 달라지는군요.
점(.)이 붙은 연산자는 element by element 즉 각 행렬의 같은 위치에 있는 각각의 element 끼리 

연산을 수행 하라는 말입니다. element 끼리의 연산이니까 두 행렬의 크기는 정확히 일치해야 합니다. 
이 점이 붙은 연사자를 잘 활용하면 정말 막강한 파워를 가지게 됩니다. *과 .*의 차이점을 잘 음미해보세요~
여기까지가 산술연산자(arithmetic operator) 이야기였습니다!!

드디어 이야기를 할 때가 된것 같습니다. MATLAB의 하이라트 중의 하이라이트 !!!
그것은 바로바로바로바로 콜론 연산자(:) colon operator가 되시겠습니다!!
숙제를 하나 내어드리겠습니다. 1부터 100까지 100개의 element가 있는 A라는 행렬을 만들어 보세요
>> A = [1 2 3 ... ... ... 99 100 ]
열심히 키보트 치고 계신가요? ^^ 힌트를 하나 드리죠~ 
콜론 연산자라는 놈이 있는데 이녀석은 정의가 이렇다고 합니다.

형식은 시작값 : (증분값) : 끝값    증분값이 없으면 즉 시작값 : 끝값 이면 증분값을 1로 간주합니다.

>> 1:5
ans =
      1    2    3    4     5

위의 숙제는 간단히 해결되었군요.
>> A = 1:100

그럼 밑의 식은 어떻게 될까요?
>> 2 : 0.5 : 5.3
ans = 
      2   2.5   3  3.5   4   4.5   5
계속 증가하다가 끝값을 넘어가면 연산이 끝납니다. 즉 끝값 5.3은 포함되지 않습니다. 
(참고:증분값은 마이너스도 가능합니다)
콜론을 사용하면 vector를 만들때 대단히 효율적입니다. 예를 하나 더 보여드리겠습니다.

>> A = sin(0 : 0.1 : 20);
workspace에서 A를 더블클릭해서 variable editor를 엽니다.

Mm-yYPW7v-UqDy-cXvV5woBWb-dPM3TLjUDzujBBxDZlaiU45CisIe1yFK0IfloG5uoySMHRJjdjsxc_sfm4Qt0rmfG3NZvBk0hnoToXwd3DNz2MyPs


1번위치를 클릭하여 1열 전체를 선택합니다.
2번위치에 있는 파도 모양의 버튼을 클릭 해보세요.

brNJcFUsaPyWoPkNiwzbxW9IXFk3dtuOv4EmoS-v2bpmBxkokoa_6f54s2iZXWy-1jh3EWjyLt11HP_ZpGbEIKxYFW0HXcq7G_Jb5c10VahIEWB8jeI


X축은 잘 안맞지만 그래도 멋진 sin 그래프가 나오는군요
어떻습니까? 콜론 연산자가 좀 이해되셨나요? 콜론연산자는 정말 중요하고 많이 쓰이는 연산자입니다.



자 오늘은 여기까지 입니다.
논리연산자, 연산자 우선순위는 여러분들에게 숙제로 맞기겠습니다.
메뉴의 Help -> Product Help를 잘 활용해보시기 바랍니다.
다음시간에 뵙죠~ 그럼 이만
profile