Function Handle Limitations for Code Generation
R2026bWhen you use function handles in MATLAB® code intended for code generation, adhere to the following restrictions:
In some cases, using the same variable to reference different function handles causes a compile-time error. For example, this code does not compile:
function y = foo(p) x = @plus; if p x = @minus; end y = x(1, 2);
You cannot pass function handles as inputs to or outputs from coder.ceval (MATLAB Coder). For example, suppose that f and str.f are
function handles:
f = @sin; str.x = pi; str.f = f;
The following statements result in compilation errors:
coder.ceval('foo', @sin);
coder.ceval('foo', f);
coder.ceval('foo', str);
You cannot create a function handle that references an extrinsic MATLAB function.
You cannot pass function handles to or from feval and other extrinsic MATLAB functions.
You cannot pass function handles as inputs to or outputs from entry-point functions. For example, consider this function:
function x = plotFcn(fhandle, data) assert(isa(fhandle,'function_handle') && isa(data,'double')); plot(data, fhandle(data)); x = fhandle(data);
In this example, the function plotFcn receives
a function handle and its data as inputs. plotFcn attempts
to call the function referenced by the fhandle with
the input data and plot the results. However, this
code generates a compilation error. The error indicates that the function isa does
not recognize 'function_handle' as a class name
when called inside a MATLAB function to specify properties of
inputs.
See Also
Topics
- Using Extrinsic Functions (MATLAB Coder)
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)