이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

스크립트에 함수 추가하기

라이브 스크립트를 비롯한 MATLAB® 스크립트에는 함수를 정의하는 코드가 포함될 수 있습니다. 이 함수를 로컬 함수라고 합니다. 로컬 함수는 스크립트 내에서 코드를 재사용하려는 경우 유용합니다. 로컬 함수를 추가하면 별도의 함수 파일을 생성하여 관리하지 않아도 됩니다. 로컬 함수는 또한 필요에 따라 손쉽게 함수를 추가하고 수정하고 삭제하는 등 함수를 시험적으로 사용해 보는 데에도 유용합니다. 스크립트 내의 함수 사용은 R2016b 이상에서 지원됩니다.

로컬 함수 추가하기

로컬 함수는 해당 함수가 정의되어 있는 파일 내에서만 인식되며, 파일 내에 있는 스크립트 코드와 기타 로컬 함수에서 모두 인식됩니다. 로컬 함수는 다른 파일에 있는 함수에서는 인식되지 않으며 명령줄에서 호출할 수 없습니다. 이는 다른 프로그래밍 언어의 서브루틴과 동일하며, 부 함수라고도 합니다.

스크립트에 로컬 함수를 추가하려면 먼저 스크립트를 생성하십시오. 홈(Home) 탭으로 이동하여 새로 만들기(New) > 스크립트(Script)를 선택합니다. 스크립트를 생성하는 방법에 대한 자세한 내용은 스크립트 생성하기 항목을 참조하십시오. 라이브 편집기에서 라이브 스크립트 만들기 항목도 참조할 수 있습니다.

스크립트를 생성한 후에는 스크립트에 코드를 추가하고 저장합니다. 예를 들어, 다음 코드를 추가하고 mystats.m이라는 스크립트로 저장하겠습니다. 다음 코드는 배열을 선언하고, 배열의 길이를 확인한 후, 두 값을 모두 로컬 함수 mymeanmymedian에 전달합니다. 로컬 함수 mymeanmymedian은 입력 목록에 대한 평균과 중앙값을 계산하고 그 결과값을 반환합니다.

참고

스크립트에 함수를 포함시키려면 MATLAB R2016b 이상이 필요합니다.

x = 1:10;
n = length(x);
avg = mymean(x,n);
med = mymedian(x,n);

function a = mymean(v,n)
% MYMEAN Example of a local function.

    a = sum(v)/n;
end

function m = mymedian(v,n)
% MYMEDIAN Another example of a local function.

    w = sort(v);
    if rem(n,2) == 1
        m = w((n + 1)/2);
    else
        m = (w(n/2) + w(n/2 + 1))/2;
    end
end

로컬 함수는 스크립트 코드 뒤에 오기만 하면 어떤 순서로든 추가할 수 있습니다. 각 함수는 자체 함수 정의문으로 시작하고 end 키워드로 끝납니다. 정의문은 함수에서 첫 번째 실행 가능한 라인입니다(예: function a = mymean(v,n)). 생성 방법을 비롯한 함수 정의문에 대한 자세한 내용은 파일 내에서 함수 생성하기 항목을 참조하십시오.

도움말에 액세스하기

명령줄 또는 다른 파일의 함수에서 로컬 함수를 호출할 수는 없지만 help 명령을 사용하여 해당 도움말에 액세스할 수 있습니다. 스크립트의 이름과 로컬 함수의 이름을 모두 지정합니다. 이때 > 문자를 사용하여 이름을 구분합니다.

help mystats>mymean      
 mymean Example of a local function.

코드 실행하기

모든 로컬 함수를 포함하여 스크립트를 실행하려면 실행(Evaluate)(스크립트의 경우) 또는 모두 실행(Run All)(라이브 스크립트의 경우) 버튼을 클릭하거나, 저장된 스크립트 이름을 명령 창에 입력하십시오. 또는 섹션 실행(Run Section) 버튼을 클릭하여 스크립트의 개별 섹션을 실행할 수도 있습니다.

현재 파일의 로컬 함수는 다른 파일의 함수보다 우선합니다. 즉, 프로그램 파일 내의 함수를 호출하면 MATLAB이 다른 함수를 찾기 전에 이 함수가 로컬 함수인지 여부를 검사합니다. 이를 통해 다른 파일에 특정 함수의 원본을 유지하면서 이 함수에 대한 대체 버전을 생성할 수 있습니다.

스크립트는 기본 작업 공간에 변수를 생성하고 이 변수에 액세스합니다. 타 함수와 마찬가지로 로컬 함수는 자체 작업 공간을 가지며, 이 작업 공간은 기본 작업 공간과 별개입니다. 로컬 함수는 다른 함수의 작업 공간에 있는 변수나 기본 작업 공간에 있는 변수를 인수로 전달받지 않는 한 그 변수에 액세스할 수 없습니다. 자세한 내용은 기본 작업 공간(Base Workspace)과 함수 작업 공간(Function Workspace) 항목을 참조하십시오.

라이브 스크립트에서 섹션 추가하고 실행하기

라이브 편집기에서는 로컬 함수 내에 있는 개별 섹션을 실행할 수 없습니다. 따라서, 라이브 스크립트의 로컬 함수 내에는 섹션 나누기를 추가할 수 없습니다. 라이브 스크립트에 로컬 함수를 추가하면 MATLAB이 첫 번째 로컬 함수 정의 앞에 자동으로 섹션 나누기를 추가하고 그 뒤의 섹션 나누기는 모두 제거합니다. 그러나 스크립트 코드 내에 있는 개별 섹션은 실행할 수 있습니다. 이 섹션에 파일의 로컬 함수에 대한 호출이 포함된 경우에도 마찬가지입니다. 섹션 나누기와 라이브 스크립트 실행에 대한 자세한 내용은 라이브 스크립트에서 섹션 실행하기 항목을 참조하십시오.

관련 항목