주요 콘텐츠

코드 생성 시 함수 핸들 제한 사항

R2026b

코드 생성을 위한 MATLAB® 코드에 함수 핸들을 사용할 경우 다음과 같은 제한 사항을 준수하십시오.

경우에 따라, 동일한 변수를 사용하여 서로 다른 함수 핸들을 참조하면 컴파일타임 오류가 발생할 수 있습니다. 예를 들어, 다음 코드는 컴파일되지 않습니다.

function y = foo(p)
x = @plus;
if p
  x = @minus;
end
y = x(1, 2);

함수 핸들을 coder.ceval에 대한 입력값으로 전달하거나 또는 이 함수의 출력값으로 전달할 수 없습니다. 예를 들어, f 및 str.f가 함수 핸들이라고 가정하겠습니다.

f = @sin;
str.x = pi;
str.f = f;

다음 명령문은 컴파일 오류를 발생시킵니다.

coder.ceval('foo', @sin);
coder.ceval('foo', f);
coder.ceval('foo', str);

외재적 MATLAB 함수를 참조하는 함수 핸들을 만들 수 없습니다.

함수 핸들을 feval 및 기타 외재적 MATLAB 함수로 전달하거나 또는 이러한 함수에서 전달할 수 없습니다.

함수 핸들을 진입점 함수에 대한 입력값으로 전달하거나 또는 진입점 함수의 출력값으로 전달할 수 없습니다. 예를 들어, 다음 함수를 살펴보겠습니다.

function x = plotFcn(fhandle, data)

assert(isa(fhandle,'function_handle') && isa(data,'double'));

plot(data, fhandle(data));
x = fhandle(data);

이 예제에서 함수 plotFcn은 함수 핸들과 함수 핸들의 데이터를 입력값으로 받습니다. plotFcn은 입력값 data를 사용하여 fhandle이 참조하는 함수를 호출하고 결과를 플로팅하려고 시도합니다. 그러나 이 코드는 컴파일 오류를 생성합니다. 이 오류는 입력값의 속성을 지정하기 위해 MATLAB 함수 내부에서 호출될 경우 함수 isa가 'function_handle'을 클래스 이름으로 인식할 수 없음을 나타냅니다.

참고 항목

도움말 항목