globale und lokale Variablen

Bei der Beschreibung von Funktionen und Skripten wurde bereits der Begriff "globale Variable" verwendet. Hierbei handelt es sich um eine Variable, auf die von allen Funktionen, Skripten und auch vom Workspace zugegriffen werden kann. Variablen, die im Workspace und in Skripten verwendet werden, sind von vornherein als global definiert. Im Gegensatz dazu sind Variablen aus Funktionen nur lokal definiert. Das heißt nur die Funktion "kennt" die Variable und kann mit ihr arbeiten. Um eine lokale zu einer globalen Variable zu machen, verwendet man den Befehl "global". Zur Verdeutlichung wird die Funktion aus dem Abschnitt "Funktionen" verwendet:

 

f.m

function y = f(x)

a = 3;
b = 2;
c = 1;

y = a*x^2+b*x+c;
end


Die Variablen a, b und c der Beispielfunktion sind lokal definiert. Vom Workspace aus kann nicht auf sie zugegriffen werden.

f.m

function y = f(x)

global a b c
a = 3;
b = 2;
c = 1;

y = a*x^2+b*x+c;
end

Damit sind die Variablen global definiert. Will man allerdings nach dem Aufrufen der Funktion auf die Variable zugreifen, erhält man folgendes Ergebnis:

>> f(5);
>> disp(a);
Undefined function or variable 'a'.

Obwohl sie in der Funktion als global definiert wurde, kann man die Variable im Workspace nicht aufrufen. Das liegt daran, dass sie auch hier als global definiert werden muss.

>> f(5);
>> global a b c;
>> disp(a);
3

Man kann die Variable nun auch im Workspace überschreiben, allerdings setzt die Funktion sie wieder zurück, sodass das Ergebnis letztlich gleich bleibt.