|
[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 |