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과 일치하면 1(true)를 반환하고, 일치하지 않으면 0(false)를 반환하는 것을 알 수 있다.
이 logical array를 활용하는 방법을 알아보자.
다음과 같이 코드를 작성하고 실행하면 ANS에 logical array가 저장되는 것을 알 수 있다.
그 다음 y=[2 4 6 8 10] 이란 행렬을 만들고, y(ANS)를 실행해보자.
그러면 4가 출력되는 것을 알 수 있다.
즉, 어떤 행렬 A와 logical array B에 대해 A(B)를 수행하면 logical array가 1인 성분의 인덱스에서 A의 값을 반환하게 된다.
좀 더 이해하기 쉽게 다음과 같은 코드를 작성하고 실행해보자.
[1 2 3 2 5]에서 2와 일치하는 성분의 인덱스는 2와 4이다. 그래서 logical array는 2번째와 4번째 성분에서 1을 가지고 나머지는 0을 가지는 것을 알 수 있다.
또한, 이 logical array를 y 행렬에 대입하면 2번째와 4번째 원소가 출력되는 것을 알 수 있다.
이런 식으로 logical array를 행렬에 대입하면 원하는 인덱스의 값을 반환할 수 있다.
단, logical 배열과 대입하려는 행렬의 차원은 같아야 한다.
다음 게시물에서 이를 어떻게 활용하는지 strcmpi 함수를 이용하여 알아볼 것이다.
'Matlab' 카테고리의 다른 글
[Matlab] 완전 제곱수를 찾는 방법 : any(), ismember() (0) | 2023.04.28 |
---|---|
[Matlab] 문자열 행렬에서 일치하는 문자 인덱스 찾기 : strcmp, logical array (0) | 2023.04.24 |
[Matlab] z = f(x,y) 푸는 방법 : meshgrid (0) | 2023.04.24 |
[Matlab] 조건을 하나씩 대입하며 작동하는 함수 만들기 : 익명함수, arrayfun, 함수 핸들 (0) | 2023.04.23 |
[Matlab] 여러개의 조건에서 값 계산 : 행렬 성분끼리 곱하기, try-catch (0) | 2023.04.23 |
댓글