Main Content

함수 핸들 비교하기

명명된 함수에서 생성된 핸들 비교하기

MATLAB®은 동일한 명명된 함수에서 생성하는 함수 핸들이 서로 동일하다고 간주합니다. isequal 함수는 이러한 유형의 핸들을 비교할 때 true 값을 반환합니다.

fun1 = @sin;
fun2 = @sin;
isequal(fun1,fun2)
ans =

  logical

   1

이러한 핸들을 MAT 파일에 저장했다가 작업 공간으로 다시 불러오는 경우에도 이 핸들은 여전히 서로 동일합니다.

익명 함수에 대한 핸들 비교하기

명명된 함수에 대한 핸들과 달리, 동일한 익명 함수를 나타내는 함수 핸들은 서로 동일하지 않습니다. MATLAB에서 인수에 해당하지 않는 변수의 고정 값이 동일하다고 보장할 수 없으므로 함수 핸들이 동일하지 않은 것으로 간주됩니다. 예를 들어, 이 경우에 A는 인수에 해당하지 않는 변수입니다.

A = 5;
h1 = @(x)A * x.^2;
h2 = @(x)A * x.^2;
isequal(h1,h2)
ans =

  logical

   0

익명 함수 핸들의 복사본을 만드는 경우 복사본과 원본은 서로 동일합니다.

h1 = @(x)A * x.^2;
h2 = h1;
isequal(h1,h2)
ans =

  logical

   1

중첩 함수에 대한 핸들 비교하기

하나의 중첩 함수에 대해 여러 개의 함수 핸들을 작성할 수 있는데, 중첩 함수가 들어 있는 하나의 함수가 호출되면서 이러한 함수 핸들이 생성되는 경우라면 MATLAB은 이러한 함수 핸들이 서로 동일하다고 간주합니다. 아래 함수는 동일한 중첩 함수에 대해 두 개의 핸들을 생성합니다.

function [h1,h2] = test_eq(a,b,c)
h1 = @findZ;
h2 = @findZ;

   function z = findZ
   z = a.^3 + b.^2 + c';
   end
end

동일 중첩 함수에 대해 생성되는 함수 핸들 중, 동일 부모 함수 호출에서 생성되는 함수 핸들은 서로 동일한 것으로 간주됩니다.

[h1,h2] = test_eq(4,19,-7);
isequal(h1,h2)
ans =

  logical

   1

반면, 다른 호출에서 생성되는 함수 핸들은 서로 동일한 것으로 간주되지 않습니다.

[q1,q2] = test_eq(4,19,-7);
isequal(h1,q1)
ans =

  logical

   0

참고 항목

관련 항목