Main Content

함수를 다른 함수에 입력값으로 전달하기

함수 핸들을 함수 함수(Function Functions)라고 하는 다른 함수에 대한 입력 인수로 사용할 수 있습니다. 이러한 함수는 특정 범위의 값에 대해 수학 표현식을 실행합니다. 일반적으로 함수 함수(Function Functions)에는 integral, quad2d, fzero, fminbnd 등이 있습니다.

예를 들어, 0부터 5까지의 자연 로그에 대한 적분을 구하기 위해서는 log 함수에 대한 핸들을 integral에 전달합니다.

a = 0;
b = 5;
q1 = integral(@log,a,b)
q1 = 3.0472

마찬가지로 sin 함수와 exp 함수의 적분을 구하기 위해서는 해당 함수에 대한 핸들을 integral에 전달합니다.

q2 = integral(@sin,a,b)
q2 = 0.7163
q3 = integral(@exp,a,b)
q3 = 147.4132

익명 함수에 대한 핸들을 함수 함수에 전달할 수도 있습니다. 익명 함수는 프로그램 파일을 필요로 하지 않는, 단일 라인 표현식 기반 MATLAB® 함수입니다. 예를 들어, 다음과 같이 범위 [0,Inf]에 대해 x/(ex-1)의 적분값을 계산합니다.

fun = @(x)x./(exp(x)-1);
q4 = integral(fun,0,Inf)
q4 = 1.6449

입력값으로 함수를 받는 함수(함수 함수(Function Functions)라고 함)는 함수 핸들과 연결된 함수에 특정 숫자의 입력 변수가 있을 것으로 예상합니다. 예를 들어, integral이나 fzero를 호출하는 경우 함수 핸들과 연결된 함수에는 정확하게 하나의 입력 변수만 있어야 합니다. integral3을 호출하는 경우 함수 핸들과 연결된 함수에는 세 개의 입력 변수가 있어야 합니다. 더 많은 변수가 있는 함수 함수(Function Functions)를 호출하는 방법에 대한 자세한 내용은 함수를 파라미터화하기 항목을 참조하십시오.

다른 유형의 입력값을 받는 함수를 작성하는 것과 같은 방식으로, 함수 핸들을 받는 함수를 작성할 수 있습니다. 지정된 입력값에 대한 입력 함수 핸들의 출력값에 2를 곱하는 함수를 작성합니다.

function x = doubleFunction(funHandle,funInput)
    x = 2*funHandle(funInput);
end

함수 핸들을 입력값으로 제공하여 이 함수를 테스트합니다.

x = doubleFunction(fun,4)
x = 0.1493

관련 예제

세부 정보