2012-11-11 18 views

Antwort

13

Natürlich.

In einer solchen m-Datei würden die lokalen Funktionen nach der Hauptfunktion deklariert werden. Zum Beispiel:

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 diesem Beispiel main_func kann helper_func1 und helper_func2 ohne Probleme aufrufen. Sie können es Testlauf und sehen Sie selbst:

>> main_func(8) 

    ans =   
     160 

Es gibt keine Notwendigkeit für eine Vorwärtsdeklaration ist.

Übrigens sind viele m-Dateien, die mit MATLAB kommen, auf diese Weise implementiert. Zum Beispiel corrcoef. Mit type corrcoef können Sie das sehen.

Hinweis: Lokale Funktionsdefinitionen sind an der Eingabeaufforderung oder in Skripten nicht zulässig, daher müssen Sie in Ihrer m-Datei eine "Hauptfunktion" deklarieren. Als Übung kopiere mein Beispiel in eine neue m-Datei, entferne die Deklaration main_func (nur die erste Zeile) und schau was passiert.

Verwandte Themen