Matlab löscht automatisch die Indexvariable nach der Ausführung einer Schleife

8

In Matlab, wenn ich eine "for ... end" -Schleife verwende, existiert die Indexvariable noch in meinem Arbeitsbereich, nachdem die Schleife vollständig ausgeführt wurde. Ich möchte, dass es automatisch gelöscht wird, da es außerhalb der Schleife nicht mehr relevant ist und den Arbeitsbereich verschmutzt.

Zum Beispiel ist im folgenden Code die Variable "i" nach der Ausführung der Schleife noch vorhanden. Da es sich um eine lokale Variable handeln sollte, möchte ich, dass sie automatisch gelöscht wird , ohne dass ich dies explizit tun muss.

%Vor%

Ich weiß, dass es eher ein ästhetisches Problem als ein Fehler ist, aber für ein leichteres Verständnis der Ergebnisse meines Programms möchte ich, dass diese "temporären" Variablen verschwinden, wenn ich ihren Kontext verlasse.

Bisher konnte ich nur die Anzahl dieser temporären Variablen reduzieren, indem ich sie wiederverwendete.

Bearbeiten:

Es scheint, dass es keine wirkliche Lösung gibt, diese "temporären" Variablen automatisch zu entfernen. Die folgenden Möglichkeiten, diese Variablen zu vermeiden, sind:

  • Vermeidung von Schleifen

  • Machen Sie die Schleifen in Funktionen, die Variablen der Funktionen sind lokal und werden nicht in den Arbeitsbereich gelangen.

Mesop 24.03.2012, 09:37
quelle

2 Antworten

6

Wenn Sie wirklich sicherstellen möchten, dass einige Ihrer Variablen einen begrenzten Umfang haben und Sie den Aufruf von clear vermeiden möchten, können Sie nested Funktionen . Beachten Sie, dass dies bei der Lesbarkeit nicht hilfreich sein kann, und es ist more als das Aufrufen von clear . Es stellt jedoch sicher, dass die einzigen Variablen in Ihrem Hauptfunktionsarbeitsbereich diejenigen sind, die Sie behalten möchten / müssen.

%Vor%     
Jonas 24.03.2012, 13:14
quelle
5

Schau! Keine Schleife, keine Iterationsvariable!

%Vor%

Und während ich hier bin, stimme ich nicht zu, dass Ihre i eine temporäre Variable ist; Sie haben es in den Arbeitsbereich gestellt, also ist es im Wesentlichen global. Setzen Sie es in einen anderen Kontext (z. B. in eine Funktion), wenn Sie nicht möchten, dass es den Arbeitsbereich verschmutzt.

Und ja, ich weiß, dass Matlab ein Konzept von globalen Variablen hat, das sich etwas von den Variablen des Arbeitsbereichs unterscheidet, aber das ist hier nicht ganz relevant.

    
High Performance Mark 24.03.2012 09:54
quelle

Tags und Links