Definizione della funzione
R2025bEsistono delle considerazioni particolari quando si creano funzioni di MATLAB® destinate alla generazione di codice. Queste considerazioni particolari includono alcune restrizioni nell'utilizzo di varargin e varargout, delle funzioni ricorsive, delle funzioni anonime e delle funzioni annidate. Per generare codice per le funzioni ricorsive di MATLAB, il generatore di codice utilizza la ricorsione a tempo di compilazione o la ricorsione a tempo di esecuzione. Per produrre codice C/C++ efficiente, il generatore di codice crea talvolta più versioni di una funzione, chiamate specializzazioni della funzione. In alcuni casi, è possibile impedire al generatore di codice di creare le specializzazioni della funzione utilizzando coder.ignoreSize e coder.ignoreConst. Durante la generazione di una funzione MEX, è possibile escludere la generazione di codice per una funzione specifica nel codice MATLAB e utilizzare invece il motore di MATLAB per eseguire la chiamata. A tal fine, utilizzare il costrutto coder.extrinsic.
Funzioni
coder.extrinsic | Dichiarare la funzione come estrinseca ed eseguirla in MATLAB |
coder.ignoreConst | Prevent use of constant value of expression for function specializations |
coder.ignoreSize | Prevent code generator from creating function specializations for constant-size expressions |
coder.mustBeComplex | Validate that value lies on the complex plane (Da R2023b) |
coder.mustBeConst | Validate that value is a compile-time constant (Da R2023b) |
coder.noImplicitExpansionInFunction | Disable implicit expansion within the specified function in the generated code |
coder.sameSizeBinaryOp | Apply element-wise binary operations without implicit expansion |
coder.specifyAsGPU | Specify that value is a GPU input to an entry-point function for GPU code generation (Da R2023b) |
Argomenti
- Direttiva di compilazione %#codegen
Indicare che una funzione di MATLAB è destinata alla generazione di codice.
- Effects of Implicit Expansion on Generated Code
Implicit expansion in the generated code can affect output sizes, code size, and performance.
- Control Implicit Expansion in Generated Code
Disable implicit expansion globally, for specific functions, or for specific operations.
- Generate Code for arguments Block That Validates Input and Output Arguments
Generate code for MATLAB code that constrains class, size, and other aspects of function input and output values.
- Code Generation for Recursive Functions
Use recursive functions in MATLAB code that is intended for code generation.
- Anonymous Function Limitations
- Nested Function Limitations
- Using Extrinsic Functions
Use MATLAB to execute a function call in the generated code.
Risoluzione dei problemi
Resolve Error: Nonconstant Index into varargin or varargout
Troubleshoot error when the code generator cannot determine the value of an index
into varargin or varargout inside a
for-loop.
Troubleshoot Replicated Functions in Generated Code
Troubleshoot duplicate functions in the generated code.
Resolve Error: Output Variable Must Be Assigned Before Run-Time Recursive Call
Troubleshoot error when the MATLAB code does not assign a value to an output variable before a recursive call.
Resolve Error: Compile-Time Recursion Limit Reached
Troubleshoot error when recursion during code generation exceeds the limit.
Resolve Error: Arrays Have Incompatible Sizes
Troubleshoot size incompatibility errors that occur during code generation.
Resolve Issue: coder.inline("never") and coder.nonInlineCall Do Not Prevent Function Inlining
Troubleshoot instances of coder.inline('never') not
preventing inlining.
Resolve Error: Variables Must Be Fully Defined Before Use
Troubleshoot code generation error when variables are not defined before use.
Resolve Error: Cannot Determine the Exact Number of Iterations for a Loop
Troubleshoot error when code generator is unable to determine the number of iterations in a loop.