아래와 같이 입력하면 화면에 행렬 X가 나타난다. j 대신 i가 쓰일 수도 있다.
>> X=[1 j;-5j 2]X =1 + 0i 0 + 1i-0 - 5i 2 + 0i |
위와 같이 MATLAB에서 허수를 나타내기 위해서 ‘i’ 혹은 ‘j'를 사용한다. 그러므로 변수 이름으로 ‘i’와 ‘j'를 사용하지 않아야 한다.
>> i0.0000 + 1.0000i>> a = 2 + 3ia =2.0000 + 3.0000i |
수식 입력의 편의를 위해서 복소수를 입력할 때에는 위에서와 같이 ‘3i’를 입력해도 가능하다. 그러나 i 가 허수단위가 아닐 때에는 불가능하며 앞에서도 설명한 바 있듯이 'i3'으로 입력하면 안된다는 것이 유의하자. i3은 변수명으로 해석하기 때문이다.
만약 ‘i’를 행렬 이름으로 (즉, 변수로) 사용했을 때는 그 행렬이 존재하는 한 ‘i’는 행렬 이름이며 허수가 아니다.
>> i = [1 2 3] i =1 2 3>> a = 10 + i a =11 12 13 |
‘i’를 다음과 같이 지우면 다시 허수로 사용할 수 있다.
>> clear i >> i 0.0000 + 1.0000i |
여기서 clear 명령어는 그 뒤에 오는 변수를 메모리에서 지우는 일을 수행한다. 만약 ‘i’가 행렬 변수로 사용되고 있을 때는 ‘sqrt(-1)’을 이용하여 허수를 만들 수 있다.
>> i = [1 2 3]i =1 2 3>> i1 2 3>> a = [1+i 1-i] % 'i'는 행렬로 인식된다.a =2 3 4 0 -1 -2>> a = [1+sqrt(-1) 1-sqrt(-1)]a =1.0000 + 1.0000i 1.0000 - 1.0000i |
하지만 ‘i’ 나 ‘j’는 MATLAB에서는 일종의 예약어(keyword)이므로 변수명으로 사용하는 것은 피하는 것이 바람직하다.
MATLAB에서 복소수를 취급하는 기본적인 함수들은 다음 표와 같다.
[표 1] 복소수 관련 내장 함수들
함수명
|
기능
|
실행 예
(a=3+4j 일 경우)
|
결과
|
real()
|
복소수의 실수부를 구한다
|
real(a)
|
3
|
imag()
|
복소수의 허수부를 구한다
|
imag(a)
|
4
|
abs()
|
복소수의 크기를 구한다
|
abs(a)
|
5
|
angle()
|
복소수의 각(라디안)을 구한다
|
angle(a)
|
0.9273
|
conj()
|
켤레복수소를 구한다
|
conj(a)
|
3-i4
|
만약 각도의 결과를 라디안에서 도(degree)로 바꾸고 싶다면 angle()함수의 결과값에 360/2π 를 곱하면 된다.
>> angle(3+4i)ans =0.9273>> ans*360/(2*pi)ans =53.1301 |
복소행렬의 전치를 구할 때는 약간의 주의가 필요하다. 복소전치행렬(complex conjugate transpose)을 구할 수도 있고 그냥 전치행렬을 구할 수도 있다. 복소전치행렬은 각 행렬 요소들의 공액 복소수(complex conjugate, 허수부의 부호만 바뀐 복소수)를 구한 다음 전치를 하는 것이다. 이전 포스트에서 설명한 (‘)연산자가 실은 복소전치행렬을 구하는 연산자이다. 다음 예에서 이것을 확인할 수 있다.
>> X=[1 j;-5j 2]X =1 + 0i 0 + 1i-0 - 5i 2 + 0i>> Y=X'Y =1 - 0i -0 + 5i0 - 1i 2 - 0i |
이와 다르게 행렬의 복소수 요소의 공액복소수를 취하지 않고 단순히 비대각요소의 위치만 전치하고 싶다면 (.‘)연산자를 사용한다.
>> Z=X.'Z =1 + 0i -0 - 5i0 + 1i 2 + 0i |
두 전치연산자 (‘)와 (.’)의 차이에 주의해야 한다.
댓글 없음:
댓글 쓰기