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 Funktion, 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".

 

f.m

function y = f(x)

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

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


Die Variablen a, b und c der Beispielfunktion sind lokal definiert, man kann aus dem Workspace nicht darauf zugreifen oder sie verändern.

f.m

function y = f(x)

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

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

Damit sind die Variablen global definiert, will man allerdings nach dem aufrufen der Funktion darauf zugreifen, erhält man folgendes Ergebenis

>> 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, das sie auch hier als global definiert werden muss.

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

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