본문 바로가기
programming language/MATLAB

MATLAB assert() 함수

by __observer__ 2012. 6. 28.
반응형

MATLAB 을 이용하여 함수를 만들 때 argument 의 제약 조건 등을 주고 싶을 때는 assert() 함수를 사용 할 수 있습니다.

 

예를 들어 아래 함수처럼 간단하게 배열의 인자에 접근해서 값을 가져 오는 경우를 생각해 보죠.

 


MATLAB 의 배열 인덱스는 1 부터 시작을 하니깐 아래 함수의 args 값은 1 이상의 값이 들어와야 합니다.



또한 아래 함수의 x 라는 벡터가 10 초과의 인덱스는 없으니깐 10 이하의 args 값이 들어와야 하는거죠.


 

function output= fooTest(args)

 

x=1:10;

output=x(args);

 

end

 


 

이러한 경우 assert() 함수를 이용하여 다음과 같이 작성 합니다.

 

function output= fooTest(args)

 

assert((args>0) & (args <=10),'Index Error')

 

x=1:10;

output=x(args);

 

end

 

위 코드에서 assert() 함수의 (args>0) & (args <=10) 부분이 비교 조건이고 ~

 

두번째 인자인 'Index Error' 부분이 에러 메시지 입니다.

 

위와 같이 작성하고 command window 에 다음과 같이 실행해 보면 ~

 

11이라는 수는 10 보다 크니깐 에러가 나죠~

 

또한 다음과 같은 경우도 에러가 발생합니다.

 

위 경우는 1:10이라는 벡터 값을 주었을 경우인데요. 에러 메시지를 보시면 아시겠지만 assert() 함수의 비교 결과는 scalar 값이 되어야 합니다.

 

위 함수를 다음과 같이 수정하면 벡터의 입력에 대해서도 정상적으로 동작하게 만들 수 있습니다.

 

function output= fooTest(args)

 

assert(all((args>0) & (args <=10)),'Index Error')

 

x=1:10;

output=x(args);

 

end

 

위 함수는 all() 이라는 함수를 사용했는데요~

 

all(x) 함수는 x 가 모두 true 인 경우만 true 를 반환 합니다. 참고로 any() 함수는 하나라도 true 이면 true 를 반환 합니다.

 

어쨌든 위와 같이 함수를 만들고 다음과 같이 실행해 보면~

 

요렇게~ 정상적으로 실행이 되죠~


반응형

댓글