Main Content

파일 내에서 함수 생성하기

스크립트와 함수 모두에서 프로그램 파일에 일련의 명령을 저장하여 해당 명령을 재사용할 수 있습니다. 사용자가 명령줄에 입력하는 것과 같은 형식으로 명령을 저장하기 때문에 스크립트는 가장 간단한 유형의 프로그램이라 할 수 있습니다. 함수에서는 입력값을 전달하고 출력값을 반환할 수 있으므로 함수가 더 유연합니다. 예를 들어, fact라는 함수는 숫자(n)의 계승을 계산하고 그 결과(f)를 반환합니다.

function f = fact(n)
    f = prod(1:n);
end

이 함수 유형은 명령줄이 아니라 파일 내에서 정의해야 합니다. 대개 자체 파일에 함수를 저장합니다. MATLAB®은 프로그램과 파일 이름을 연결하므로 이런 경우 함수와 파일에 동일한 이름을 사용하는 것이 좋습니다(이 예제에서는 fact.m 사용). 현재 폴더나 MATLAB 검색 경로에 있는 폴더에 파일을 저장합니다.

MATLAB과 함께 설치되는 함수에 적용되는 동일한 구문 규칙을 사용하여 명령줄에서 함수를 호출할 수 있습니다. 예를 들어, 5의 계승을 계산합니다.

x = 5;
y = fact(5)
y =

   120

R2016b부터는 스크립트 파일의 끝에 함수를 포함시켜 함수를 저장할 수도 있습니다. 예를 들어, 몇 가지 명령과 두 개의 함수 factperm을 사용하여 mystats.m이라는 파일을 만듭니다. 다음 스크립트는 (3,2)의 순열을 계산합니다.

x = 3;
y = 2;
z = perm(x,y)

function p = perm(n,r)
    p = fact(n)/fact(n-r);
end

function f = fact(n)
    f = prod(1:n);
end

명령줄에서 스크립트를 호출합니다.

mystats
z =

     6

함수 정의에 대한 구문

모든 함수의 첫 번째 라인은 다음 요소를 포함하는 정의문입니다.

function 키워드(필수)

키워드에는 소문자를 사용합니다.

출력 인수(선택 사항)

함수가 하나의 출력값을 반환하는 경우 function 키워드 다음에 출력값 이름을 지정할 수 있습니다.

function myOutput = myFunction(x)

함수가 둘 이상의 출력값을 반환하는 경우 대괄호로 출력값 이름을 묶습니다.

function [one,two,three] = myFunction(x)

출력값이 없는 경우 이를 생략할 수 있습니다.

function myFunction(x)

또는 빈 대괄호를 사용할 수 있습니다.

function [] = myFunction(x)

함수 이름(필수)

유효한 함수 이름은 변수 이름과 동일한 규칙을 따릅니다. 함수 이름은 문자로 시작해야 하며 문자, 숫자 또는 밑줄을 포함할 수 있습니다.

참고

혼란을 방지하기 위해 함수 파일의 이름과 파일 내 첫 번째 함수의 이름을 동일하게 만드십시오. MATLAB은 함수 이름이 아니라 파일 이름과 프로그램을 연결합니다. 스크립트 파일은 파일 내 함수와 동일한 이름을 가질 수 없습니다.

입력 인수(선택 사항)

함수가 입력값을 받는 경우 함수 이름 다음에 입력값의 이름을 괄호로 묶습니다. 쉼표로 입력값을 구분합니다.

function y = myFunction(one,two,three)

입력값이 없는 경우 괄호를 생략할 수 있습니다.

여러 입력 인수 또는 출력 인수로 함수를 정의할 경우 필수 인수를 먼저 나열해야 합니다. 이 순서를 따르면 선택적 인수를 지정하지 않고 함수를 호출할 수 있습니다.

함수와 파일의 내용

함수의 본문에는 유효한 MATLAB 표현식, 제어 흐름 명령문, 주석, 빈 라인, 중첩 함수가 포함될 수 있습니다. 하나의 함수에서 생성되는 모든 변수는 해당 함수와 관련된 작업 공간 내에 저장되며, 이 작업 공간은 기본 작업 공간과 별개입니다.

프로그램 파일은 여러 함수를 포함할 수 있습니다. 파일에 함수 정의만 포함된 경우, 첫 번째 함수가 메인 함수이며 MATLAB이 파일 이름과 연결하는 함수입니다. 메인 함수 뒤에 오거나 스크립트 코드에 포함된 함수를 로컬 함수라고 합니다. 로컬 함수는 파일 내에서만 사용할 수 있습니다.

end 문

함수는 end 문, 파일의 끝, 로컬 함수의 정의 라인 중 가장 먼저 나오는 항목으로 끝납니다. 다음과 같은 경우 end 문이 필요합니다.

  • 파일의 함수가 중첩 함수(해당 부모 내에 완전히 포함된 함수)를 포함하는 경우.

  • 함수가 함수 파일 내에서 로컬 함수이며 파일에 있는 로컬 함수가 end 키워드를 사용하는 경우.

  • 함수가 스크립트 파일 내의 로컬 함수인 경우.

end가 경우에 따라 선택 사항이긴 하지만 더 나은 코드 가독성을 위해 사용하도록 하십시오.

참고 항목

관련 항목

외부 웹사이트