Main Content

localfunctions

MATLAB 파일의 모든 로컬 함수에 대한 함수 핸들

설명

예제

fcns = localfunctions는 현재 파일의 모든 로컬 함수에 대한 함수 핸들로 구성된 셀형 배열 fcns를 반환합니다.

명령줄 또는 익명 함수의 컨텍스트에서는 로컬 함수를 정의할 수 없습니다. 따라서 이러한 컨텍스트에서 localfunctions를 호출하면 빈 셀형 배열이 반환됩니다. localfunctions는 셀형 배열로 반환 시, 함수 핸들을 정의되지 않은 순서로 반환합니다.

예제

모두 축소

현재 작업 폴더에 파일 computeEllipseVals.m으로 다음 함수를 만듭니다. 이 함수는 모든 로컬 함수에 대한 핸들로 구성된 셀형 배열을 반환합니다.

function fh = computeEllipseVals
fh = localfunctions;
end

function f = computeFocus(a,b)
f = sqrt(a^2-b^2);
end

function e = computeEccentricity(a,b)
f = computeFocus(a,b);
e = f/a;
end

function ae = computeArea(a,b)
ae = pi*a*b;
end

명령 프롬프트에서 함수를 불러와서 로컬 함수에 대한 핸들로 구성된 셀형 배열을 가져옵니다.

fh = computeEllipseVals
fh =

  3x1 cell array

    {       @computeFocus}
    {@computeEccentricity}
    {        @computeArea}

핸들을 사용해 로컬 함수를 호출하여 타원의 면적을 계산합니다. computeArea 함수 핸들은 셀형 배열의 세 번째 요소입니다.

fh{3}(3,1)
ans =

    9.4248

R2016b에서는 스크립트에 로컬 함수를 포함시킬 수 있습니다. 따라서 localfunctions 함수를 사용하여 스크립트나 명령 프롬프트에서 불러올 수 있는 함수 핸들을 만들 수 있습니다.

현재 작업 폴더에 파일 mystats.m으로 다음 스크립트를 만듭니다. 이 스크립트는 모든 로컬 함수에 대한 핸들로 구성된 셀형 배열을 만듭니다.

x = [1 3 5 7 9 10 8 6 4 2 0 -2];

avg = mymean(x)

fh = localfunctions;
med = fh{2}(x) % equivalent to med = mymedian(x,n)

function a = mymean(v)
n = length(v);
a = sum(v)/n;
end

function m = mymedian(v)
n = length(v);
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

스크립트를 실행합니다. MATLAB®은 mymean 로컬 함수를 직접 불러와 평균을 계산하고 함수 핸들을 통해 mymedian 로컬 함수를 불러와 중앙값을 계산합니다.

mystats
avg =

    4.4167


med =

    4.5000

명령 프롬프트에서 핸들을 사용하여 mymean 로컬 함수를 호출합니다. 명령 프롬프트에서 스크립트의 변수에 액세스할 수 있습니다. mymean 함수 핸들은 셀형 배열의 첫 번째 요소입니다.

x2 = [1 1 2 6 24 120 720 5040];
fh
avg2 = fh{2}(x2)
fh =

  2x1 cell array

    {  @mymean}
    {@mymedian}


avg2 =

    15

버전 내역

R2013b에 개발됨