coder.extrinsic
Dichiarare la funzione come estrinseca ed eseguirla in MATLAB
Sintassi
Descrizione
coder.extrinsic( dichiara function)function come funzione estrinseca. Il generatore di codice non produce codice per il corpo della funzione estrinseca, ma utilizza invece il motore di MATLAB® per eseguire la chiamata. Questa funzionalità è disponibile solo quando il motore di MATLAB è disponibile durante l'esecuzione. Esempi di situazioni in cui è disponibile il motore di MATLAB includono l'esecuzione di funzioni MEX, simulazioni Simulink® e chiamate di funzione al momento della generazione di codice, noto anche come fase di compilazione.
Durante la generazione di codice autonomo, il generatore di codice tenta di determinare se la funzione estrinseca influisce sulla funzione in cui viene chiamata. Se la funzione estrinseca non influisce sulla funzione di chiamata (ad esempio, la funzione estrinseca visualizza un grafico), il generatore di codice procede con la generazione di codice, ma esclude la funzione estrinseca dal codice generato. Se la funzione estrinseca influisce sulla funzione di chiamata (ad esempio, la funzione estrinseca restituisce un valore alla funzione di chiamata), il generatore di codice produce un errore di compilazione.
MATLAB ignora la direttiva coder.extrinsic esterna alla generazione di codice.
Vedere Use MATLAB Engine to Execute a Function Call in MATLAB Function Blocks.
Nota
L'output di runtime di una funzione estrinseca è un mxArray, noto anche come array MATLAB. Le uniche operazioni valide per un mxArray sono memorizzarlo in una variabile, passarlo a un'altra funzione estrinseca o restituirlo a MATLAB. Per eseguire qualsiasi altra operazione su un valore mxArray, ad esempio utilizzarlo in un'espressione nel codice, è necessario convertire mxArray in un tipo noto, assegnando mxArray una variabile il cui tipo è già definito da un compito precedente. Vedere Working with mxArrays (MATLAB Coder).
coder.extrinsic(function1,...,functionN) dichiara function1 tramite functionN come funzioni estrinseche.
coder.extrinsic( controlla la sincronizzazione dei dati globali tra il codice MATLAB e il file MEX generato prima e dopo la chiamata alla funzione estrinseca. Per impostazione predefinita, il generatore di codice sincronizza le variabili globali prima e dopo le chiamate alle funzioni estrinseche per massimizzare la coerenza tra il codice MATLAB e la funzione MEX. Per scoprire come e quando modificare questo comportamento predefinito, vedere Generate Code for Global Variables (MATLAB Coder).syn, function1, ... ,functionN)
Esempi
Argomenti di input
Limitazioni
Non è possibile utilizzare
coder.ceval(MATLAB Coder) su funzioni dichiarate come estrinseche utilizzandocoder.extrinsic.Le chiamate alle funzioni estrinseche possono influire sulle prestazioni, poiché il generatore di codice copia i dati passati a una funzione estrinseca e li invia a MATLAB per l'esecuzione. Al contrario, MATLAB copia qualsiasi dato di output per riportarlo nell'ambiente della funzione MEX.
Il generatore di codice non supporta l'utilizzo di
coder.extrinsicper chiamare funzioni che si trovano in una cartella privata.Il generatore di codice non supporta l'utilizzo di
coder.extrinsicper chiamare funzioni locali o nidificate.La generazione di codice non supporta i valori passati a o restituiti da funzioni estrinseche che siano o contengano:
Classi di handle
Handle della funzione
Valori opachi (vedere
coder.opaque)
Suggerimenti
Il generatore di codice considera automaticamente come estrinseche molte funzioni di visualizzazione di MATLAB comuni, quali
plot,dispefigure. Non è necessario dichiarare esplicitamente queste funzioni come estrinseche utilizzandocoder.extrinsic.Utilizzare la funzione
coder.screener(MATLAB Coder) per rilevare quali funzioni devono essere dichiarate come estrinseche. Questa funzione esegue lo strumento di predisposizione per la generazione di codice, che analizza il codice MATLAB per individuare feature e funzioni non supportate per la generazione di codice. Vedere Check Code Using the Code Generation Readiness Tool.
Funzionalità estese
Cronologia versioni
Introdotto in R2011a