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 를 반환 합니다.
어쨌든 위와 같이 함수를 만들고 다음과 같이 실행해 보면~
요렇게~ 정상적으로 실행이 되죠~
'programming language > MATLAB' 카테고리의 다른 글
MATLAB Fixed point toolbox, demo버그? (0) | 2012.08.04 |
---|---|
MATLAB persistent 주의 할 점 (2) | 2012.07.03 |
MATLAB 파일이름 다룰때 유용한 함수들 fileparts, fullfile, filesep (0) | 2012.07.01 |
MATLAB 그래프 자동 업데이트 linkdata (0) | 2012.06.30 |
MATLAB 이미지 gray scale 변환 (7) | 2012.06.27 |
MATLAB 축에 날짜 표시하기 datetick() (2) | 2012.06.20 |
MATLAB 윈도우에서의 파일 쓰기 줄 바꿈 (8) | 2012.06.17 |
MATLAB log 저장하기 diary (0) | 2012.06.16 |
댓글