본문 바로가기
Matlab

[Matlab] logical 배열(array)?

by Mene 2023. 4. 24.
반응형

Matlab에서 true와 false에 대해서는 많이 들어본 적이 있을 것이다.

 

<, >, ==, ~= 등 논리 연산자를 사용했을 때, 그 식이 true이면 1을 반환하고, false이면 0을 반환하게 된다. 

 

예를 들어 1==1을 작성하고 코드를 실행하면 다음과 같은 논리값(logical) 1이 나온다.

 

 

 

 

logical array는 이 논리값을 배열로 확장한 형태로 n*n 행렬이 하나의 논리 연산을 수행하는 경우 나타난다.

 

예를 들어 x=[1 2 3 4 5] 행렬이 있는 경우, x==1을 실행하면 다음과 같은 logical array가 나타난다.

x=[1 2 3 4 5];
x==1
 

 

결과에서 알 수 있듯이 x 행렬의 성분이 1과 일치하면 1(true)를 반환하고, 일치하지 않으면 0(false)를 반환하는 것을 알 수 있다.

 

 

 

 

logical array를 활용하는 방법을 알아보자.

 

다음과 같이 코드를 작성하고 실행하면 ANS에 logical array가 저장되는 것을 알 수 있다.

x=[1 2 3 4 5];
ANS=x==2
 
 

 

그 다음 y=[2 4 6 8 10] 이란 행렬을 만들고, y(ANS)를 실행해보자.

 

x=[1 2 3 4 5];
ANS=x==2;
 
y=[2 4 6 8 10];
y(ANS)

그러면 4가 출력되는 것을 알 수 있다.

 

 

 

 

 

즉, 어떤 행렬 A와 logical array B에 대해 A(B)를 수행하면 logical array가 1인 성분의 인덱스에서 A의 값을 반환하게 된다.

 

좀 더 이해하기 쉽게 다음과 같은 코드를 작성하고 실행해보자.

x = [1 2 3 2 5];
ANS=x==2
 
y = [2 4 6 8 10];
y(ANS)

[1 2 3 2 5]에서 2와 일치하는 성분의 인덱스는 2와 4이다. 그래서 logical array는 2번째와 4번째 성분에서 1을 가지고 나머지는 0을 가지는 것을 알 수 있다.

 

또한, 이 logical array를 y 행렬에 대입하면 2번째와 4번째 원소가 출력되는 것을 알 수 있다.

 

 

 

 

이런 식으로 logical array를 행렬에 대입하면 원하는 인덱스의 값을 반환할 수 있다.

단, logical 배열과 대입하려는 행렬의 차원은 같아야 한다.

 

다음 게시물에서 이를 어떻게 활용하는지 strcmpi 함수를 이용하여 알아볼 것이다.

반응형

댓글