Domanda: In Matlab, come posso controllare se una funzione è una funzione o un tipo di funzione particolare?Matlab - Controllare se la funzione handle è una funzione particolare o un tipo di funzione
Esempio: Lasciare f1
essere una maniglia di funzione. Come posso verificare se f1
è la funzione Matlab incorporata mean
? Come posso verificare se f1
è una funzione anonima?
La mia soluzione corrente: La mia attuale soluzione a questo problema riguarda una chiamata alla funzione functions
. functions
accetta un handle di funzione come input e restituisce una struttura contenente informazioni sulla funzione di input handle, ad esempio tipo di funzione, percorso, nome funzione ecc. Funziona, ma non è una soluzione ideale perché, per citare lo official documentation:
"Attenzione MATLAB® fornisce la funzione functions
solo per scopi di ricerca e debug. Poiché il suo comportamento potrebbe cambiare nelle versioni successive, non dovresti fare affidamento su di esso per scopi di programmazione."
Questo è un domanda valida in astratto, ma mi chiedo perché è necessario farlo? Qual è la cosa più importante dietro la domanda che stai cercando di fare? –
@SamRoberts All'interno di una funzione che accetta 'f1' come uno dei suoi input, sono in grado di prendere alcune scorciatoie se' f1' è uno di un numero di funzioni riconosciute, come una media campionaria ecc. Tuttavia, ho anche voglio che la funzione funzioni per altri tipi di funzioni 'f1' dove tali scorciatoie sono impossibili. Ha senso ciò? –
Colin, potresti leggere questo articolo, in particolare i due commenti (uno citato, uno nei commenti effettivi) di Loren Shure di MathWorks: http://undocumentedmatlab.com/blog/cellfun-undocumented-performance-boost/ Indicherebbe che alcune funzioni incorporate come 'cellfun' affrontano lo stesso problema di te, e risolvono il problema consentendo entrambi gli handle di funzione e un insieme limitato di argomenti di stringa nello stesso punto, fornendo un percorso di codice alternativo e più veloce per il preset stringhe. Solo un pensiero. –