[Home] [Lexikon] [Aufgaben] [Tests] [Kurse] [Begleitmaterial] [Hinweise] [Mitwirkende] [Publikationen] | |
Mathematik-Online-Kurs: MATLAB - Programmierung | |
Globale und persistente Variablen |
[vorangehende Seite] [nachfolgende Seite] | [Gesamtverzeichnis][Seitenübersicht] |
global
Variablenname(n)
deklarierten Variablen eine globale Gültigkeit, d.h. es kann
funktions- und laufzeitübergreifend auf eine Variable zugegriffen werden.
Die mittels
persistent
Variablenname(n)
definierten persistenten Variablen haben nur innerhalb der Funktion,
in welcher sie definiert werden, einen globalen Charakter. D.h. sie
werden beim Verlassen der Funktion nicht gelöscht, stehen aber
anderen Funktionen nicht zur Verfügung.
Bei der ersten Deklaration einer globalen bzw. persistenten
Variablen wird diese von MATLAB als leere Matrix
initialisiert. Bei Operationen mit globalen bzw. persistenten
Variablen ist daher ggf. zunächst mittels if isempty(
Variablenname)
der Status zu prüfen.
Werden die globalen Daten nur innerhalb ein und derselben Funktion, aber über mehrere Aufrufe hinweg benötigt, so ist die Initialisierung mit persistent der mit global vorzuziehen, da es zu keinen Namenskonflikten kommen kann. Im Gegensatz dazu können mit global deklarierte Variablen auch von anderen Funktionen manipuliert werden, sofern gewollt oder ungewollt die gleichen Vairablennamen verwendet werden.
function fa persistent PVAR global GVAR GVAR=GVAR+1; if isempty(PVAR) PVAR=1; else PVAR=PVAR+1; end fprintf('Funktion fa: PVAR=%d, GVAR=%d\n',PVAR,GVAR);Diese Funktion verwendet die persistente Variable PVAR und die globale Variable GVAR. Mit Hilfe der if-Bedingung wird auf den Fall reagiert, dass PVAR nach der ersten Deklaration eine leere Matrix ist. Bei GVAR wird davon ausgegangen, dass sie bereits als natürliche Zahl definiert wurde. Die Funktion erhöht beide Variablen um 1 und gibt dann die jeweiligen Werte aus.
Analog dazu wird eine zweite Funktion fb definiert, in der ebenfalls die persistente Variable PVAR und die globale Variable GVAR verwendet werden:
function fb persistent PVAR global GVAR GVAR=GVAR+1; if isempty(PVAR) PVAR=1; else PVAR=PVAR+1; end fprintf('Funktion fb: PVAR=%d, GVAR=%d\n',PVAR,GVAR);
Ausgabe eines Testlaufs:
>> global GVAR >> GVAR=0; >> fa, fa, fb, fa, fb Funktion fa: PVAR=1, GVAR=1 Funktion fa: PVAR=2, GVAR=2 Funktion fb: PVAR=1, GVAR=3 Funktion fa: PVAR=3, GVAR=4 Funktion fb: PVAR=2, GVAR=5Zunächst wird in der Befehlsumgebung die globale Variable GVAR deklariert und auf 0 gesetzt. Anschließend werden die Funktionen fa und fb mehrfach aufgerufen. Wie an der Ausgabe zu erkennen ist, kann der Wert der globalen Variablen sowohl in der Befehlsumgebung, als auch von beiden Funktionen geändert werden. Im Gegensatz dazu haben die persistenten Variablen (trotz gleicher Variablennamen) nur innerhalb der jeweiligen Funktion Gültigkeit. Somit gibt GVAR die Anzahl aller Funktionsaufrufe und PVAR die Anzahl der jeweiligen Funktionsaufrufe von fa und fb wieder.
[vorangehende Seite] [nachfolgende Seite] | [Gesamtverzeichnis][Seitenübersicht] |
automatisch erstellt am 5.2.2008 |