2010-01-20 10 views

risposta

17

L'operatore @ crea un handle di funzione, qualcosa che consente di creare e passare facilmente una chiamata di funzione come una variabile. Ha molte caratteristiche interessanti, nessuna delle quali è disponibile per te sfortunatamente. Questo perché, come sospetti, non è stato introdotto in MATLAB fino alla versione 7, la versione immediatamente successiva alla tua.

7

Utilizzato per dichiarare Anonymous Functions in Matlab.

Penso che i termini siano "Function Handle".

Praticamente copre l'impossibilità di Matlab di dichiarare una funzione in qualsiasi posizione in qualsiasi file M.

Si può vedere qui: What is your favourite MATLAB/Octave programming trick?

ho trovato ad essere utile nell'elaborazione delle immagini insieme con il comando "blockproc".

+0

In realtà, si chiama handle di funzione (non gestore) che utilizza una convenzione di denominazione simile poiché gli oggetti grafici dispongono anche di "maniglie". – MatlabDoug

+0

Risolto il problema, grazie. – Royi

1

function_handle (@)

Maniglia utilizzato nelle funzioni di chiamare indirectlyexpand tutto in pagina Sintassi maniglia = @functionname manico = @ (arglist) anonymous_function

Descrizione

impugnatura ritorna = @functionname una maniglia per la funzione MATLAB® specificata.

Un handle di funzione è un valore MATLAB che fornisce un mezzo per chiamare una funzione indirettamente. È possibile passare i manici di funzione nelle chiamate ad altre funzioni (spesso chiamate funzioni di funzione). È anche possibile memorizzare i quadratini di funzione nelle strutture di dati per un utilizzo successivo (ad esempio, come richiami di Handle Graphics). Un handle di funzione è uno dei tipi di dati MATLAB standard.

Nel momento in cui si crea un handle di funzione, la funzione specificata deve trovarsi sul percorso MATLAB e nello scope corrente del codice che crea l'handle. Ad esempio, è possibile creare un handle su una funzione locale a condizione che lo si faccia all'interno del file che definisce tale funzione locale. Questa condizione non si applica quando si valuta l'handle della funzione. È possibile, ad esempio, eseguire una funzione locale da un file separato (esterno) utilizzando un handle di funzione. Ciò richiede che l'handle sia stato creato dalla funzione locale (nell'ambito).

handle = @ (arglist) anonymous_function costruisce una funzione anonima e restituisce un handle per quella funzione. Il corpo della funzione, a destra delle parentesi, è una singola istruzione o comando MATLAB. arglist è un elenco separato da virgole di argomenti di input. Esegui la funzione chiamandola tramite la maniglia della funzione, maniglia.

Esempi

Esempio 1 - Costruire una maniglia per un nome funzione L'esempio seguente crea una maniglia di funzione per la funzione di gobbe e lo assegna alla fhandle variabile.

fhandle = @humps; Passa l'handle a un'altra funzione nello stesso modo in cui passerai qualsiasi argomento. Questo esempio passa l'handle di funzione appena creato a fminbnd, che quindi si minimizza nell'intervallo [0.3, 1].

x = fminbnd (fhandle, 0,3, 1) x = 0,6370 La funzione fminbnd valuta la maniglia funzione @humps. Di seguito viene mostrata una piccola parte del file fminbnd. Nella riga 1, il parametro di input funfcn riceve la funzione handle @humps che è stata passata. L'istruzione, nella riga 113, valuta l'handle.

1 funzione [XF, FVAL, exitflag, uscita] = ... fminbnd (funfcn, ax, bx, opzioni, varargin) . . . 113 fx = funfcn (x, varargin {:});

+0

Penso che un link aggiornato sarebbe meglio che copiarlo. Almeno puoi eliminare "espandi tutto ...", "Sintassi", ecc. E disporlo sulla pagina per essere più leggibile – Adiel

Problemi correlati