2012-11-11 20 views

risposta

13

Naturalmente.

In un tale file m, le funzioni locali sarebbero dichiarate dopo la funzione principale. Ad esempio:

function y = main_func(x) 
% # This is the main function 
y = helper_func1(x) .* helper_func2(x); % # Just an example 

function h1 = helper_func1(x) 
% # This is a helper function #1 
h1 = x + 2;        % # Just an example 

function h2 = helper_func2(x) 
% # This is a helper function #2 
h2 = x * 2;        % # Just an example 

In questo esempio main_func può invocare helper_func1 e helper_func2 senza problemi. È possibile test-eseguirlo e vedere di persona:

>> main_func(8) 

    ans =   
     160 

Non è necessaria alcuna dichiarazione di inoltro.

A proposito, un sacco di m-file forniti con MATLAB sono implementati in questo modo. Ad esempio, corrcoef. Con type corrcoef, puoi vederlo.

Nota: le definizioni di funzione locale non sono consentite al prompt o negli script, pertanto è necessario dichiarare una funzione "principale" nel proprio m-file. Come esercizio, copia-incolla il mio esempio in un nuovo m-file, rimuovi la dichiarazione di main_func (solo la prima riga) e vedi cosa succede.

Problemi correlati