MATLAB에서 제공하는 논리 연산자는 다음 표와 같다.
[표 1] 논리 연산자
논리연산자 | 기능 |
& | AND |
| | OR |
~ | NOT |
(부연하자면 C/C++의 비트연산자와 같다. MATLAB은 비트 연산자는 없다.)
다음 예를 보자
>> A=magic(3)A =8 1 63 5 74 9 2>> B=pascal(3)B =1 1 11 2 31 3 6>> ~(A>B)0 1 00 0 00 0 1>> (A>2)&(B<3)1 0 11 1 01 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 23 4>> B=[1 2;3 4]B =1 23 4>> C=[1 2; 3 5]C =1 23 5>> A==B1 11 1>> A==C1 11 0>> isequal(A,B)1>> isequal(A,C)0 |
'프로그래밍언어.Lib > MATLAB' 카테고리의 다른 글
MATLAB의 다항식(polynimial) 다루기 (part 2) (0) | 2015.06.27 |
---|---|
MATLAB의 다항식(polynimial) 다루기 (part 1) (0) | 2015.06.27 |
MATLAB의 행렬 간 관계 연산 (0) | 2015.06.27 |
MATLAB의 행렬 간 산술 연산 (0) | 2015.06.26 |
MATLAB의 상수와 내부 변수들 (0) | 2015.06.25 |