Definizione della funzione
Quando si creano funzioni di MATLAB® destinate ad essere utilizzate in un blocco MATLAB Function sono presenti delle considerazioni particolari. 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.ignoreConst
e coder.ignoreSize
. È 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
.
Blocchi
MATLAB Function | Include MATLAB code in Simulink models |
MATLAB System | Include System object in model |
Funzioni
coder.extrinsic | Declare function as extrinsic and execute it in MATLAB |
coder.ignoreSize | Prevent code generator from creating function specializations for constant-size expressions |
coder.ignoreConst | Prevent use of constant value of expression for function specializations |
coder.mustBeConst | Validate that value is a compile-time constant (Da R2023b) |
coder.unroll | Unroll for -loop by making a copy of
the loop body for each loop iteration |
coder.sameSizeBinaryOp | Apply element-wise binary operations without implicit expansion (Da R2021b) |
coder.noImplicitExpansionInFunction | Disable implicit expansion within the specified function in the generated code (Da R2021b) |
coder.read | Read data files at run time in generated code (Da R2023a) |
coder.write | Create data files that the generated code reads at run time (Da R2023a) |
Argomenti
- Compilation Directive %#codegen
Indicate that a MATLAB function is intended for code generation.
- Generate Code With Implicit Expansion Enabled
The code generator introduces modifications in the generated code to accomplish implicit expansion.
- Optimize Implicit Expansion in Generated Code
Implicit expansion in the generated code is enabled by default.
- Code Generation for Variable Length Argument Lists
Generate code for
varargin
andvarargout
. - 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.
- Force Code Generator to Use Run-Time Recursion
Rewrite your MATLAB code so that the code generator uses run-time recursion instead of compile-time recursion.
- Code Generation for Anonymous Functions
Use anonymous functions in MATLAB code intended for code generation.
- Code Generation for Nested Functions
Use nested functions in MATLAB code intended for code generation.
- Resolution of Function Calls for Code Generation
The code generator uses precedence rules to resolve function calls.
- Resolution of File Types on Code Generation Path
The code generator uses precedence rules to resolve file types.
- Use MATLAB Engine to Execute a Function Call in MATLAB Function Blocks
If a function is not supported for code generation, declare it as extrinsic to execute in MATLAB.
Risoluzione dei problemi
Nonconstant Index into varargin or varargout in a for-Loop
Force loop unrolling when the code generator cannot
determine the value of the index into varargin
or varargout
.
Avoid Duplicate Functions in Generated Code
Reduce the occurrence of duplicate functions in the generated code.
Output Variable Must Be Assigned Before Run-Time Recursive Call
Troubleshoot output variable assignment for run-time recursion.
Compile-Time Recursion Limit Reached
Troubleshoot compile-time recursion limit error.
Resolve Error: Size Mismatches
Troubleshoot size mismatch errors that occur during code generation.