관계 연산이나 논리연 산에서는 C언어에서와 유사하게 MATLAB은 0을 거짓으로 0이 아닌 다른 수(보통은 1이 쓰임)를 참으로 간주한다. 모든 관계 연산과 논리 연산에서 참이면 1, 거짓이면 0을 그 결과로서 반환한다. MATLAB에서의 관계 연산자는 다음 표와 같다.
[표 1] 관계 연산자
관계 연산자 | 의미 |
< | 작다. |
<= | 작거나 같다. |
> | 크다. |
>= | 크거나 같다. |
== | 같다. |
~= | 다르다. |
위의 표에서 ‘같다’와 ‘다르다’에 주의해야 한다. C언어를 처음 배울 때도 대입연산자(=)와 관계연산자(==)를 혼동해서 논리적 오류를 범하는 경우가 많은데 여기에서도 그렇다. 두 연산자를 잘 구분해야 한다. 그리고 ‘다르다’는 (!=)가 아니고 (~=)임에 유의하자.
관계연산자의 피연산자는 두 개인데 다음의 두 가지 경우가 있을 수 있다.
① 둘 다 행렬일 경우 - 이 경우는 두 행렬의 차수가 같아야 하고 각 행렬의 요소간의 관계가 검색된다. 결과로는 같은 차수의 행렬이 생성된다.
② 하나는 행렬 다른 하나는 스칼라인 경우 - 스칼라와 행렬의 각 요소간의 관계가 검색되며 결과로는 행렬과 같은 차수의 행렬이 생성된다.
다음의 예를 보자.
>> A=1:4, B=4-AA =1 2 3 4B =3 2 1 0>> C = A>2C =0 0 1 1>> D = (A==B)D =0 1 0 0>> E = A<=BE =1 1 0 0 |
첫 번째 예에서는 행렬 A와 스칼라 2를 비교했다(A>2). 따라서 행렬 A의 각 요소와 2를 비교해서 그 요소가 크면 1을 그렇지 않으면 0을 가지는 행렬을 만들어서 C에 대입하는 것이다. (A==B)에서는 둘 다 행렬이고 이 경우에 두 행렬의 크기는 같아야 한다. 같은 위치에 있는 요소를 비교하여 같으면 1 다르면 0을 갖는 행렬을 반환하게 된다.
다음과 같이 관계연산자와 산술연산자를 혼용할 수도 있다.
>> B-(A>2) 3 2 0 -1 |
위의 예에서 (A>2)의 결과는 0과 1로 이루어진 보통의 행렬이기 때문에 산술연산(이 경우 뺄셈)에 사용될 수 있음을 보여주는 것이다. 다음 예제를 보자.
>> x1=-1:1x =-1 0 1>> x2=x1+(x1==0)*epsx2 =-1.0000 0.0000 1.0000 |
위의 예제에서 벡터 x1을 [-1 0 1]로 생성시키고 두 번째 명령에서 x1에서 0인 요소를 찾아서 0대신 eps를 대입한 후 x2에 대입한 것이다. eps는 MATLAB에서 표현할 수 있는 가장 작은 수이다. 이제 다음을 보자.
>> sin(x1)./x10.8415 NAN 0.8415 |
위에서 두 번째 요소가 NAN인데 이것은 x1의 두 번째 요소가 0이고 sin(0)도 0이기 때문에 0/0 인 결과가 되어서 그렇다. 올바른 극한값 1을 얻기 위해서는 x1의 0을 eps로 치환한 x2를 이용하면 된다.
>> sin(x2)./x2 0.8415 1.0000 0.8415 |
'프로그래밍언어.Lib > MATLAB' 카테고리의 다른 글
MATLAB의 다항식(polynimial) 다루기 (part 1) (0) | 2015.06.27 |
---|---|
MATLAB의 행렬 간 논리 연산과 관련 함수 (0) | 2015.06.27 |
MATLAB의 행렬 간 산술 연산 (0) | 2015.06.26 |
MATLAB의 상수와 내부 변수들 (0) | 2015.06.25 |
MATLAB의 문자열(string)과 관련 함수 (0) | 2015.06.25 |