본문 바로가기
Matlab

[Matlab] 완전 제곱수를 찾는 방법 : any(), ismember()

by Mene 2023. 4. 28.
반응형

1*N인 벡터 a의 원소 중 하나가 다른 원소의 완전 제곱수인지 판단하는 함수를 만들어보자.

 

ismember(a,b)는 a의 데이터를 b에서 찾은 경우 논리값 1(true)를 포함하는 배열을 만들어 낸다.

 

예를 들어 a=[1 2 3 4], b=[2 4 6 8 10]인 경우 ismember(a,b)를 사용하면 [0 1 0 1]을 반환하고, 이는 a(2)=2, a(4)=4가 벡터 b에도 존재한다는 것을 의미한다.

 

 

 

any(a)는 배열 A의 모든 요소가 0이 아닌 숫자이거나 논리값 1(true)인지 판단하는 함수다.

 

any([0 0 0])은 0(false)를 반환하고, any([1 0 0])은 1(true)가 첫번째 요소에 존재하므로 1(true)를 반환한다.

 

 

 

이제 이를 이용해서 원소 중 하나가 다른 원소의 완전제곱수인지 판단하는 함수를 만들어보자.

 

a=[1 4 9 16];
ANS=Check(a)

function Logic = Check(a)

    Logic=any(ismember(a.^2,a));

end

 

이것은 a를 제곱한 원소가 a 행렬에 있는지 확인하고, 하나라도 있으면 any()를 사용해 True를 반환하는 함수이다.

 

출력은 다음과 같다.

 

따라서 어떤 값이 하나라도 벡터에 포함이 되어있는지 알고 싶은 경우, ismember()와 any()함수를 활용해서 구할 수 있다.

반응형

댓글