여기에서는 이전 포스트에 이어서 기본적인 행렬 생성의 기본적인 내용을 설명하겠다. 행렬 X가 다음과 같이 복소행렬(행렬의 요소 중 하나 이상이 복소수인 행렬)이라고 하자.
아래와 같이 입력하면 화면에 행렬 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 |
두 전치연산자 (‘)와 (.’)의 차이에 주의해야 한다.
'프로그래밍언어.Lib > MATLAB' 카테고리의 다른 글
MATLAB 의 행렬의 인덱싱 방법 (part 1) (0) | 2015.06.24 |
---|---|
MATLAB 의 행렬 기본 입력 (part 4) : 벡터와 콜론(:) 연산자 (0) | 2015.06.24 |
MATLAB 행렬 기본 입력 (part 2) : 함수 행렬과 전치 행렬 (0) | 2015.06.24 |
MATLAB 개요 (0) | 2015.06.24 |
MATLAB을 무료로 실습할 수 있는 방법 (0) | 2015.06.24 |