MATLAB에서 제공하는 논리 연산자는 다음 표와 같다.


[표 1] 논리 연산자

논리연산자

기능

&

AND

|

OR

~

NOT


(부연하자면 C/C++의 비트연산자와 같다. MATLAB은 비트 연산자는 없다.)

 다음 예를 보자


>> A=magic(3)
A =
8 1 6
3 5 7
4 9 2

>> B=pascal(3)
B =
1 1 1
1 2 3
1 3 6

>> ~(A>B)
0 1 0
0 0 0
0 0 1

>> (A>2)&(B<3)
1 0 1
1 1 0
1 0 0


 이전 포스트에서 설명한 기본 논리/관계연산자 외에도 MATLAB은 추가적인 다양한 논리/관계 함수를 제공한다.


[표 2] 관계/논리 연산 관련 함수들 (X, Y는 함수)

함수명

함수의 기능

Z=xor(X,Y)

XOR 연산을 수행한다

Z=any(X)

벡터 X의 요소 중 하나라도 0이 아닌 요소가 있으면 1을 반환, X가 행렬일때는 열단위로 연산된다.

z=all(X)

벡터 X의 요소들 모두 0이 아니면 1을 반환

(X가 행렬일 때는 열단위로 연산된다.)

z=isempty(X)

행렬 X가 빈행렬이면 1을 반환

z=isequal(X,Y)

행렬 X와 Y가 완전히 동일하면 1을 반환

Z=isinf(X)

행렬 X의 요소 중 inf가 있는 곳에 1을 반환

Z=isnan(X)

행렬 X의 요소 중 nan이 있는 곳에 1을 반환

z=isreal(X)

행렬 X의 요소 중 복소수가 하나도 없으면 1을 반환


위의 도표에서 소문자 z가 출력변수이면 그 함수는 스칼라값(0혹은1)을 반환함을 의미하며 대문자 Z가 출력행렬이면 그 함수는 입력 파라메터와 동일한 크기를 갖는 행렬을 반환한다는 것을 의미한다.


 이 중 isequal()함수는 연산자 (==)와 같은 역할을 하는 것 아닌가 생각할수 있으나 (==)연산자는 요소간 비교이고 isequal()함수는 두 행렬 전체를 비교하는 함수이다. 다음 예에서 이를 확인해 보라.


>> A=[1 2;3 4]
A =
1 2
3 4

>> B=[1 2;3 4]
B =
1 2
3 4

>> C=[1 2; 3 5]
C =
1 2
3 5

>> A==B
1 1
1 1

>> A==C
1 1
1 0

>> isequal(A,B)
1

>> isequal(A,C)
0




Posted by 살레시오
,