m-파일

DGIST matlab
이동: 둘러보기, 검색

소개

m-파일은 매트랩에서 실행가능한 파일을 말합니다. m-파일에는 크게 스트립트 파일과 함수 파일이 있습니다. m-파일의 확장자는 .m입니다. 하지만 굳이 확장자를 .m으로 하지 않아도 매트랩에서 실행가능합니다. m-파일은 text 형식의 문서이므로 매트랩 내에서 뿐만 아니라 모든 문서 편집기에서 생성, 수정이 가능합니다.

m-파일의 종류

스트립트 파일

스크립트 파일은 매트랩 명령어를 모아놓은 파일입니다. 스크립트 파일을 실행하면 각 줄 입력된 문자열을 매트랩 명령어로 인식하여 실행합니다.

예시

함수 [math]y=\sin(x)[/math]의 그래프를 매트랩으로 그려봅시다. 명령어 창에서 다음과 같이 입력하면 될 것 입니다.

com ex.png

이렇게 간단한 함수의 경우에는 명령어 창에서 해결할 수 있지만 여러 함수가 얽혀 있거나 프로그래밍을 해야할 경우에는 명령어 창에 하나씩 입력하는 것은 매우 번거롭습니다. 만약 명령어 한 줄이 오류가 나면 전체 명령어를 다시 입력해야 하는 번거로움을 제거하기 위해 m-파일을 만드는 것입니다. 예를 들어 위의 그래프를 그리는 명령을 m-파일로 실행해 봅시다.

comex-1.png

편집기에서 파일의 내용을 수정하고, 저장합니다. 함수 파일과는 달리 스크립트 파일의 이름은 임의로 지정할 수 있습니다. 저장 후 실행버튼 (또는 F5키)를 누르면 스크립트 파일에 있는 모든 명령어가 순차적으로 실행됩니다. (실행할 수 없다는 경고창이 뜨면 경로에 추가버튼을 누르세요.)

함수 파일

매트랩에 기본적으로 내장된 함수 이외에 함수 파일을 만들어 자신이 원하는 함수를 만들 수 있습니다.

형식

함수 파일은 스트립트 파일과는 달리 정해전 형식이 있습니다. 쉬운 이해를 위해 예를 들어 봅시다. 2차원 평면 위의 점 [math]P[/math]와 양의 실수 [math]r[/math]를 입력받아 중심이 [math]P[/math]이고 반지름이 [math]r[/math]인 원을 2차원 평면에 그리는 함수를 만들어 봅시다. 이 함수의 이름을 myCircle이라 하겠습니다.

가장 먼저 해야할 일은 편집기를 실행하는 것입니다. 파일 내용을 작성하기 전, 이 함수의 기능과 사용법에 대한 도움말을 주석 처리하여 첫 줄에 입력합니다. (주석을 붙이는 습관을 갖게 되면 효율적인 프로그래밍에 큰 도움이 됩니다.) 이 설명은 함수 파일 저장 후, 명령어 창에서 help myCircle를 입력하면 확인할 수 있습니다. 예를 들어 다음과 같은 설명을 붙여줍니다.

%
% myCircle 은 중심점과 반지름을 입력받아 2차원 평면에 원을 그리는 함수입니다.
% 사용법은 다음과 같습니다: myCircle(P,r)
% 여기서 P는 2개 이상이 성분을 갖고 있는 행벡터입니다.
% r은 양의 실수 입니다.

이렇게 설명을 해 두면, 자신이 만든 함수 파일을 다른 사람이 직접 파일 내용을 확인하지 않고도 쉽게 사용할 수 있습니다. (복잡한 함수일수록 더욱 유용합니다.)

help ex circle.png

이 후에 본격적으로 함수 파일의 내용이 들어가게 됩니다. 가장 첫 줄에 와야 하는 것은 함수 파일을 선언하는 구문입니다. 이는 아래와 같습니다.

function myCircle ( P , r )

여기서 function은 바뀌지 않는 부분입니다. myCircle는 명령어 창에서 불러올 함수의 이름입니다. 괄호 안에는 함수가 입력 받을 변수의 내용을 저장하는 지역 변수의 이름입니다.

주의: 매트랩에서 실행된 함수는 입력받은 변수에 대한 검증을 하지 않습니다. 무슨 뜻인가 하면, 함수를 만들 당시에는 P라는 변수를 [2 1] 또는 [-1,0]와 같은 행벡터로 입력받기를 기대했지만, 사용자가 P=1로 정의하여 함수의 입력 변수에 지정할 수도 있습니다. 이 경우에 함수 실행시 어디선가 오류가 날 것입니다. 이 경우, 함수 자체적으로 오류의 원인 해결에 도움을 줄 수 있도록 하는 것이 좋습니다. 다음은 myCircle.m의 한 예입니다.

%
% myCircle 은 중심점과 반지름을 입력받아 2차원 평면에 원을 그리는 함수입니다.
% 사용법은 다음과 같습니다: myCircle(P,r)
% 여기서 P는 2개 이상이 성분을 갖고 있는 행벡터입니다.
% r은 양의 실수 입니다.

function myCircle ( P , r )

if length(P) < 2 
   disp ( '첫 번째 변수는 2개 이상의 성분을 갖는 행벡터이어야 합니다.' ) ;
end

theta = linspace ( 0 , 2*pi , 100 ) ;
plot( r*cos(theta)+P(1) , r*sin(theta)+P(2) ) ;

end

함수 파일의 마지막은 end입니다. 이제 이 함수 파일을 실행하기 위해서 저장을 합니다. 함수 파일의 이름은 [함수의 이름].m 입니다. 예를 들어 위 함수 파일은 myCircle.m로 저장해야 합니다.

폴더를 실행 경로에 추가하기

아직 끝이 아닙니다. 매트랩에서 사용자가 직접 정의한 함수 파일을 사용하기 위해서는 함수 파일을 저장한 폴더가 실행가능한 경로에 있어야 합니다. 이를 가장 쉽게 지정하는 방법은 함수 파일을 저장 후, 상단의 실행 아이콘을 클릭하는 것입니다. 만약 함수 파일이 저장된 폴더가 경로로 지정되어 있지 않았다면 오른쪽과 같은 메세지가 뜰 것입니다. 경로에 추가하기 버튼을 누르면 매트랩은 함수 파일이 위치한 폴더를 실행 경로에 포함시킵니다. 이렇게 하면 해당 폴더에 있는 모든 함수 파일을 자유롭게 불러올 수 있습니다. 정상적으로 작동하는지 확인해 봅시다. (만약 폴더 변경을 누르면 현재 매트랩 실행 경로를 함수 파일이 있는 폴더로 바꿉니다. 이것은 실행 경로 목록에 폴더를 추가하지는 않습니다.)

m-파일 실행 방법

간단합니다. 매트랩 상단의 홈 탭에서 열기를 클릭하여 m-파일을 불러온 뒤, 실행하면 됩니다.