본문 바로가기
PROGRAMMING/MATLAB

m파일 하나에 여러 개의 함수 작성

by BLADEBONE 2014. 8. 29.

MATLAB에서 코드를 작성하는 경우 함수를 작성하여 보다 간결하게 할 때가 많다.


간혹 하나의 함수를 호출하였을 때 내부에서 다시 다른 함수(호출된 함수에 종속된 함수)를 호출하는 경우가 있다. 이를 그림으로 표현하면 아래와 같다. FunctionA는 실제 호출되는 함수로 해당 코드는 FunctionA.m으로 저장이 될 것이다. FunctionBFunctionCFunctionA에서 사용된 함수로 FunctionA에 종속된 함수이다.



위와 같은 경우 FunctionA, FunctionB, 그리고 FunctionC를 별개의 m파일로 작성할 수도 있지만, FunctionBFunctionC가 별도로 호출되는 경우 없이 FunctionA에 종속되어 호출되는 경우에는 여러개의 m파일을 만들기보다 하나의 m파일 안에 호출된 함수에 종속된 다른 함수들을 함께 작성하는 것이 관리하기에 더 편리하다.


이를 위한 방법은 매우 쉽게도 각 function의 정의 끝에 'end'를 붙임으로서 구현할 수 있다.


즉 아래와 같이 코드를 작성하게 되면 주함수에서 종속된 함수를 호출할 수 있게 된다. 예제에서는 한 개의 함수만 더 추가한 것으로 multiFunc이 주 함수이며, multiFunc2는 종속된 함수이다. multiFunc의 경우, 명령창에서 바로 실행이 가능하지만 - 해당 m파일이 있는 곳으로 path 설정되어 있는 상태 - 종속된 함수인 multiFunc2는 해당 함수가 없다고 나온다. 이는  확실하지는 않지만 MATLAB의 m파일 명명 규칙에 따른 것으로 생각된다. 기본적으로 함수인 경우에는 m파일명과 함수명이 동일해야 하기 때문이다.




앞서 설명하였듯이 주함수와 종속함수가 존재하는 경우에는 위와 같이 함수를 작성하는 것이 관리 및 디버깅에 있어 더 편리할 것으로 생각된다. 더불어 종속함수 중 별도 함수로 만들어야하는 경우에는 해당 부분만을 별도의 파일로 저장함으로써 함수 생성이 가능하다.



반응형

댓글