이전 포스트에서 MATLAB의 스크립트 파일(m파일)에 대해서 설명했는데 파일로 기록하여 수행하는 것의 장점은 다음과 같다.
① 동일한 작업을 손쉽게 반복하여 수행할 수 있다.
② 변수값 등을 변경하여 재수행하기 편하다.
스크립트 m파일을 수행할 때 명령창에서 ‘ex1'이라고 명령을 내렸었다. 즉 파일이름이 곧 명령어가 되는 것이다. 만약 현재 작업공간에 'ex1'이라는 변수가 존재한다면 명령창에는 이 변수값을 보여줄 것인가 혹은 ex1.m화일을 수행할 것인가 우선 순위의 문제가 생긴다. 명령창에 어떤 명령어가 입력되었을 경우 다음과 같은 순서에 따라 검색한다.
현재 작업공간에 그 변수가 존재 하는가 검색한다. 변수가 존재할 경우 변수값을 보여준다.
만약 변수가 존재하지 않을 경우 내부적으로 정의된 함수들(MATLAB의경우 C: \MATLAB50 \Toolbox \Internal 폴더에 존재하는 함수들)을 검색하여 동일한 함수가 있으면 그 함수를 수행한다.
현재 폴더 내의 m파일을 검색해서 동일한 이름을 갖는 m파일이 있을 경우 그것을 실행한다.
만약 현재 폴더에 그 이름을 갖는 m파일이 존재하지 않을 경우 path에 등록된 폴더들을 검색하여 그 안에 동일한 이름을 갖는 M파일이 있는지 검색하여 존재하면 그것을 실행한다.
위의 모든 경우에 해당하지 않으면 에러 메세지를 발생한다.
따라서 직접 작성하는 m파일을 저장할 때 내부함수 ( sin, cos, exp, log 등등)와 이름이 겹쳐지지 않도록 주의해야 하며 lookfor명령어(또는 help명령어)를 사용하여 지금 사용하려는 파일명이 내부함수에 있는지 확인하는 과정도 필요하다.
스크립트 m파일을 작성할 때 유용한 입출력 명령어들을 소개하면 다음 표와 같다.
[표 1] MATLAB의 입출력 함수들
함수명 | 기능 |
sprintf() | C언어의 printf()함수와 동일한 기능을 가진 함수 |
disp('문자열‘) | 문자열을 화면에 표시 |
y=input('문자열‘) | 키보드로부터 입력받은 값을 y에 저장 |
pause | 아무 키나 눌려질 때까지 대기 |
위의 표에서 소개한 함수중 sprintf()함수는 C언어의 printf()함수와 동일한 기능을 가진 함수이다. 이함수들을 사용하여 다음과 같은 예제를 만들어 보았다. 입력한 후 'ex2.m'화일명으로 저장하자.
n=input('Type one positive integer :');np=prod(1:n);disp(sprintf('%d! = %d. Press any key.', n ,np))pausedisp('All done.') |
이 예제는 입력받은 양의 정수의 팩토리얼(factorial)을 구하는 m파일이다. prod()함수는 입력벡터의 모든 요소들을 곱하여 그 값을 반환하는 함수이다. 이제 편집창에서 [f5]를 누르던가 아니면 다음과 같이 명령창에서 실행시켜 결과를 확인해 보자.
>>ex2 |
[그림 1] gnu octave에서 실행시킨 화면
이와 같이 input(), disp(), sprintf() 함수를 이용하면 사용자로부터 입력을 받고 화면에 결과값을 출력하는 프로그램을 작성할 수 있다.
'프로그래밍언어.Lib > MATLAB' 카테고리의 다른 글
MATLAB의 조건문 switch ~ case ~ end (0) | 2015.07.13 |
---|---|
MATLAB의 조건문 if ~ elseif ~ else ~ end (0) | 2015.07.13 |
MATLAB의 스크립트 파일(part 1) (0) | 2015.07.05 |
MATLAB에서 분할된 그래프 그리기 (3) | 2015.07.02 |
MATLAB의 로그 스케일 그래프와 극좌표 그래프 (0) | 2015.07.02 |