TearDitch

[너Do 나Do MATLAB]#4 논리연산자(Boolean/Relational operator)와 논리연산(Logical operation) 본문

MATLAB

[너Do 나Do MATLAB]#4 논리연산자(Boolean/Relational operator)와 논리연산(Logical operation)

TearDitch 2018. 1. 18. 01:23

오늘은 MATLAB(매트랩)에서 사용되는 논리연산자(Boolean operator, Relational operator)와 이것을 이용한 논리연산(Logical operation)에 대해서 살펴보도록 하겠습니다.

 

논리연산이란 참(True)과 거짓(False)을 판단하는 것을 뜻합니다. 그리고 이러한 판단에 사용되는 연산자(operator)를 논리연산자(Boolean operator)라고 부릅니다. 이러한 논리연산은 논리적 흐름을 이용하여 데이터 처리를 할 때 사용됩니다. 대표적으로 다음에 살펴볼 조건문과 같은 형태를 들 수 있겠죠. 예를들어 우리가 성별/연령별 키와 몸무게 데이터를 가지고 있다고 가정해보죠. 만약 우리가 성별로 연령대별 키와 몸무게가 어떻게 다른지 알아보고 싶다면 우리가 갖고 있는 데이터를 남자인지 여자인지 그리고 나이대가 어떤지를 통해 분류를 해야합니다. 이 때 남자인지 여자인지 판단하는 것, 그리고 나이가 20대인지 30대인지 등등 연령대를 판단하는 것이 바로 논리연산입니다. 이렇게 분류한 데이터를 이용해서 우리는 키나 몸무게 평균, 표준편차 이런 것들을 구할 수 있을 것입니다.

 

이런 논리연산에 사용되는 논리연산자는 정확히 표현하면 불린연산자(Boolean operator)관계연산자(Relational operator)로 나뉘어 집니다. 먼저 불린연산자(Boolean operator)를 살펴보겠습니다.

 

 

연산자

의미

참인 경우, 1

1

&&

그리고 (AND)

연결된 모든 구문이 참인 경우, 스칼라(scalar)

2

||

또는 (OR)

연결된 모든 구문 중 하나라도 참인 경우, 스칼라(scalar)

 3

 &

 그리고 (AND)

연결된 모든 구문이 참인 경우

 4

 |

또는 (OR) 

연결된 모든 구문 중 하나라도 참인 경우

5

~

아닌 (NOT)

참은 거짓으로 거짓은 참으로 변환

6

xor

또는 하지만 둘다는 아닌 (EXCLUSIVE OR)

연결된 모든 구문 중 하나라도 참인 경우, 모두가 참이 아닌

 

위에서 보신 바와 같이 &은 && 와 기능이 동일합니다. 마찬가지로 | 역시 || 와 동일합니다. 차이점은 && 과 || 은 Short-Circuit Logical Operator 라고 불리는데 이 의미는 연결된 구문 중 특정 구문에서 참 또는 거짓으로 명확히 판명 가능한 경우 그 이후의 구문의 참/거짓 여부를 판단하지 않는 것입니다. 예를들어 조건1 && 조건2 && 조건3 && ... 조건n 의 구문이 있다고 할 때 만약 조건2 가 거짓인 경우 && 연산자는 모든 구문이 참일 경우 참을 반환하므로 조건2가 거짓으로 판명이 된 순간 그 이후의 구문은 더 이상 볼 필요없이 결과값은 거짓이 될 것입니다. || 의 경우는 연결된 구문 중 참인 구문이 나타나면 그 이후의 구문은 판단하지 않고 결과값을 참으로 반환하는 것입니다. 이와 같은 연산을 수행하게 되면 연산 속도가 빠릅니다. 반면 & 나 | 의 경우는 모든 구문의 참/거짓을 판정하고 나서 결과값을 반환하는 것입니다. 그리고 중요한 차이점은 && 과 ||은 스칼라(scalar) 연산만 사용 가능합니다. 반면 & 와 | 는 array와 scalar 모두 사용 가능합니다. 만약 스칼라 연산을 한다면 굳이 & 나 | 을 사용할 필요는 없습니다.

 

아래 예를 통해서 이해를 도와드릴게요.

>> x = [1 2 3 0]; y = [0 2 9 1];

>> k = x & y 

k =

0    1    1    0

 

>> k = ~(x | y)

k =

0    0    0    0

 

>> k = xor(x, y)

k =

1    0    0    1

 

 

그럼 관계연산자(Relational operator)를 살펴보도록 하겠습니다.

 

 

연산자

의미

 1

==

같다

 2

~=

같지 않다

 3

>

크다

 4

<

작다

 5

>=

크거나 같다

 6

<=

작거나 같다

 

그러면 우리가 위의 관계연산자를 이용하여 논리연산을 수행해보겠습니다.

>> x = [1 2 3 4]; y = [0 2 9 1];

>> k = x < y

k =

0    0    1    0

 

>> k = x <= y

k =

0    1    1    0

 

>> k = x ~= y

k =

1    0    1    1

 

이제는 위의 논리연산자를 모두 활용하여 논리연산을 수행해보겠습니다.

>> x = [1 2 3 4]; y = [0 2 9 1];

 

>> k = x((x<y) & (x<4))   

k =

3    0

 

>> k = x((x~=y) | (y<4))   

k =

1    2    3    0

 

위에서 설명드린 논리연산자는 help relop 를 통해서 더 자세한 내용을 확인하실 수 있습니다.

 

나중에 다른 포스팅에서 다루게 되겠지만 이런 논리연산은 조건문을 구현한다거나 특정한 데이터를 추출할 때 사용할 수 있습니다. 그리고 MATLAB에서는 별도의 논리함수들도 제공합니다. 논리함수를 이용해서도 위에서 다룬 연산들을 동일하게 수행할 수 있습니다. 기회가 되면 소개하도록 할게요.

 

오늘은 논리연산자와 논리연산에 대해서 알아보았습니다.

Comments