Main Content

function

함수 이름, 입력, 출력 선언

설명

예제

function [y1,...,yN] = myfun(x1,...,xM)은 입력 x1,...,xM을 받고 출력 y1,...,yN을 반환하는 myfun이라는 함수를 선언합니다. 이 선언문은 함수에서 첫 번째 실행 가능한 라인에 있어야 합니다. 유효한 함수 이름은 영문자로 시작하고 영문자, 숫자, 밑줄을 포함할 수 있습니다.

함수는 다음과 같은 곳에 저장할 수 있습니다.

  • 함수 정의만 포함하는 함수 파일. 이 파일의 이름은 파일 내 첫 번째 함수 이름과 동일해야 합니다.

  • 명령과 함수 정의를 포함하는 스크립트 파일. 함수들은 파일의 끝에 있어야 합니다. 스크립트 파일은 파일 내 함수와 동일한 이름을 가질 수 없습니다. R2016b 이상에서는 스크립트에서 함수가 지원됩니다.

파일에는 여러 개의 로컬 함수나 중첩 함수가 포함될 수 있습니다. 파일의 가독성 향상을 위해, end 키워드로 각 함수의 끝을 표시하십시오. end 키워드는 다음과 같은 경우 필요합니다.

  • 파일에 있는 함수 내에 중첩 함수가 포함된 경우.

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

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

예제

모두 축소

calculateAverage.m이라는 파일에 벡터 입력을 받고, 값의 평균을 계산하고, 단일 결과를 반환하는 함수를 정의합니다.

function ave = calculateAverage(x)
    ave = sum(x(:))/numel(x); 
end

명령줄에서 함수를 호출합니다.

z = 1:99;
ave = calculateAverage(z)
ave =
    50

stat.m이라는 파일에 입력 벡터의 평균과 표준편차를 반환하는 함수를 정의합니다.

function [m,s] = stat(x)
    n = length(x);
    m = sum(x)/n;
    s = sqrt(sum((x-m).^2/n));
end

명령줄에서 함수를 호출합니다.

values = [12.7, 45.4, 98.9, 26.6, 53.1];
[ave,stdev] = stat(values)
ave =
   47.3400
stdev =
   29.4124

$2\pi/3$에서 피적분 함수의 값을 구하고 0부터 $\pi$까지 곡선 아래쪽 면적을 계산하는 스크립트를 integrationScript.m이라는 파일에 정의합니다. 피적분 함수 $y = \sin(x)^3$을 정의하는 로컬 함수를 포함합니다.

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

% Compute the value of the integrand at 2*pi/3.
x = 2*pi/3;
y = myIntegrand(x)

% Compute the area under the curve from 0 to pi.
xmin = 0;
xmax = pi;
f = @myIntegrand;
a = integral(f,xmin,xmax)

function y = myIntegrand(x)
    y = sin(x).^3;
end
y =

    0.6495


a =

    1.3333

stat2.m이라는 파일 내에서 2개의 함수를 정의합니다. 여기서 첫 번째 함수가 두 번째 함수를 호출합니다.

function [m,s] = stat2(x)
    n = length(x);
    m = avg(x,n);
    s = sqrt(sum((x-m).^2/n));
end

function m = avg(x,n)
    m = sum(x)/n;
end

avg 함수는 로컬 함수입니다. 로컬 함수는 동일 파일 내의 다른 함수에서만 사용될 수 있습니다.

명령줄에서 stat2 함수를 호출합니다.

values = [12.7, 45.4, 98.9, 26.6, 53.1];
[ave,stdev] = stat2(values)
ave =
   47.3400
stdev =
   29.4124

입력값을 Inf 또는 NaN 요소가 없는 숫자형 벡터로 제한하는 함수를 정의합니다. 이 함수는 arguments 키워드를 사용하는데, 이는 MATLAB® 버전 R2019b 이상에서 유효합니다.

function [m,s] = stat3(x)
    arguments
        x (1,:) {mustBeNumeric, mustBeFinite}
    end
    n = length(x);
    m = avg(x,n);
    s = sqrt(sum((x-m).^2/n));
end

function m = avg(x,n)
    m = sum(x)/n;
end

arguments 코드 블록에서 (1,:)x가 벡터임을 의미합니다. 유효성 검사 함수 {mustBeNumeric, mustBeFinite}x의 요소를 Inf 또는 NaN이 아닌 숫자형 값으로 제한합니다. 자세한 내용은 함수 인수 유효성 검사 항목을 참조하십시오.

NaN 요소가 포함된 벡터로 함수를 호출하면 입력 인수 선언에 위반됩니다. 이 위반으로 인해 mustBeFinite 유효성 검사 함수에서 오류를 발생시킵니다.

values = [12.7, 45.4, 98.9, NaN, 53.1];
[ave,stdev] = stat3(values)
Invalid input argument at position 1. Value must be finite.

버전 내역

R2006a 이전에 개발됨

모두 확장