이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.
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