WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Nur bestimmte Variablen im Workspace anzeigen lassen

 

iMC117
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 10.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.07.2015, 11:34     Titel: Nur bestimmte Variablen im Workspace anzeigen lassen
  Antworten mit Zitat      
Hallo,

in meinem Skript habe ich sehr viele Variablen definiert, die aus Matrizen, Vektoren und Structs bestehen. Diese erscheinen ja auch alle im Workspace. Nun möchte ich nur zwei bestimmte Variablen anzeigen lassen, damit mein Workspace nicht zugemüllt ist und ich eine bessere Übersicht habe.

Ich hab mir überlegt aus meinem Skript eine Funktion zu machen und diese Funktion dann in einem Steuerskript aufzurufen. So könnte ich die Outputs bestimmen und mir nur die zwei Variablen anzeigen lassen, die ich brauche.

In meinem Hauptskript sieht die Funktion so aus:

Code:
function [Output1, Output2] = Test()

...
...
...

end


Die Funktion soll keine Inputs haben.

In meinem Steuerskript muss ich ja nun nur noch die Funktion aufrufen:

Code:


Die Funktion wird im Steuerskript nun richtig aufgerufen und alles funktioniert auch soweit, aber im Workspace erscheinen trotzdem alle Variablen. ich möchte aber, dass nur die Variablen Output1 und Output2 im Workspace erscheinen.

Mit diesem Code im Steuerskript hat es leider auch nicht geklappt:
Code:
[Output1, Output2] = Test;
 


Dann kommt nämlich die folgende Fehlermeldung:

Attempt to execute SCRIPT Test as a function:
C:\Users\Name\Desktop\Skriptordner\Test.m

Error in Steuerscript (line 5)
[Output1, Output2] = Test;


Kann mir jemand bitte helfen bei dieser Methode? Und gibt es auch andere Methoden, womit man bestimmte Variablen im Workspace ausblenden bzw. "unsichtbar" machen kann?

Grüße,
iMC
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.07.2015, 11:40     Titel:
  Antworten mit Zitat      
Hallo,

wurde die Funktion abgespeichert?
Soll wirklich C:\Users\Name\Desktop\Skriptordner\Test.m ausgeführt werden, oder vielleicht eine andere Test.m, die von der angegebenen Datei überlagert wird?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 03.07.2015, 12:01     Titel: Re: Nur bestimmte Variablen im Workspace anzeigen lassen
  Antworten mit Zitat      
Hallo iMC117,

Zitat:
in meinem Skript habe ich sehr viele Variablen definiert, die aus Matrizen, Vektoren und Structs bestehen. Diese erscheinen ja auch alle im Workspace. Nun möchte ich nur zwei bestimmte Variablen anzeigen lassen, damit mein Workspace nicht zugemüllt ist und ich eine bessere Übersicht habe.

Wenn Du alle Variablen aus einem Code in den Workspace des Callers einfügen möchtest, verwende ein Script.
Wenn Du nur bestimmte Variablen in den Workspace des Caller einfügen willst, verwende eine Funktion.
Wenn Du ein Script verwenden möchtest, das sich verhält wie eine Funktion, verwende eine andere Programmiersprache als Matlab.

Zitat:
Ich hab mir überlegt aus meinem Skript eine Funktion zu machen und diese Funktion dann in einem Steuerskript aufzurufen. So könnte ich die Outputs bestimmen und mir nur die zwei Variablen anzeigen lassen, die ich brauche.

Genau.

Zitat:
Code:
function [Output1, Output2] = Test()
...
end


In meinem Steuerskript muss ich ja nun nur noch die Funktion aufrufen:
Code:

Nein. Funktionen haben Outputs und die muss man speziell zuweisen. Das gilt für die sin Funktion genauso wie für selbstgeschriebene Funktionen:
Code:
[Output1, Output2] = Test;


Zitat:
Die Funktion wird im Steuerskript nun richtig aufgerufen und alles funktioniert auch soweit, aber im Workspace erscheinen trotzdem alle Variablen.

Wenn Du wirklich das laufen lässt, was Du hier gepostet hast, dürfen nicht alle sondern gar keine Variablen der Funktion Test im Caller erscheinen.

Zitat:
Mit diesem Code im Steuerskript hat es leider auch nicht geklappt:
Code:
[Output1, Output2] = Test;

Doch. So klappt es.
Wenn nicht, passt Haralds Idee: Du rufst wohl die flasche Test.m Datei auf.
Code:


Zitat:
Und gibt es auch andere Methoden, womit man bestimmte Variablen im Workspace ausblenden bzw. "unsichtbar" machen kann?

Nach solchen magischen Tricks zu suchen erzeugt grundsätzlich Programme, die nicht debuggt werden können. Deshalb rate ich dringend dazu, lieber ordentliche Funktionen zu verwenden.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
iMC117
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 10.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.07.2015, 12:41     Titel:
  Antworten mit Zitat      
Vielen Dank für eure zwei Antworten. Lag tatsächlich an der Ordnerstruktur und nicht am Code. Hab es nun aufgeräumt und es funktioniert nun.

Eine letzte Frage noch dazu: Im Workspace wird eine weitere Variable angezeigt, nämlich "ans". Diese ist in meinem Skript nicht vorhanden. ich gehe mal davon aus, dass es für answer steht und es wie beim Taschenrechner ist. Kann ich die Variable "ans" irgendwie noch ausblenden? Ist nämlich derselbe Output wie Output1. Die erste Variable in der eckigen Klammer kommt also doppelt vor, einmal normal und einmal als ans.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.07.2015, 13:20     Titel:
  Antworten mit Zitat      
Hallo,

wenn du eine Funktion aufrufst, ohne Rückgabeargumente anzugeben, wird sie mit einem Rückgabeargument ans aufgerufen.
Code:


Wenn du die Funktion mit explizit genannten Rückgabeargumenten aufrufst, wird kein ans angelegt.
Code:
[Output1, Output2] = Test;

Es kann höchstens sein, dass das noch von einem vorherigen Aufruf im Workspace war.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.07.2015, 17:39     Titel:
  Antworten mit Zitat      
Hallo iMC117,

Zitat:
Im Workspace wird eine weitere Variable angezeigt, nämlich "ans".

Du kannst mit dem Debugger heraus finden, wo diese Variable erzeugt wird.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
iMC117
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 10.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2015, 15:53     Titel:
  Antworten mit Zitat      
Vielen Dank euch beiden. Lag tatsächlich daran, dass ans noch vom vorherigen Aufruf noch im Workspace war.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.