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

Variablen im aktuellen WS

 

Kenny051990
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 13.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2013, 10:54     Titel: Variablen im aktuellen WS
  Antworten mit Zitat      
Hallo,

ich würde gerne die Variablen des aktuellen Workspace in ein array schreiben dass ich dann mit assignin an den base workspace übergebe. Ich möchte dieses Array erstellen da sich die Anzahl der Variablen verädern und ich nicht jede einzelne Variable mit assignin und evalin behandeln will.

Who gibt nur nur eine Liste der Namen der Variablen zurück.

Code:

vars=who;
assignin('base','vars',vars);
 


Hat mir jemand einen Tipp?

Danke.
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 25.11.2013, 12:58     Titel:
  Antworten mit Zitat      
wozu willst du die daten aus einem workspace in einen anderen schrieben ?
wenn man daten aus einer funktion braucht kann man die ja als rückgabe argument mit angeben. das ist übersichtlicher als assignin etc und auch nicht so fehler anfällig und besser zu debuggen.
wenns mehrere daten sind kann man die auch in eine struct packen. dynamisch erzeugte variablen machen nur probleme sonst.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Kenny051990
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 13.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2013, 13:19     Titel:
  Antworten mit Zitat      
Ja ok ich verstehe, allerdings sehe ich den Vorteil nicht, die Daten an die Funktion zu übergeben, anstatt einfach alles immer in ein Struct im base Workspace ab zu legen und von dort auch wieder zu holen.

Dann muss ich mir den Aufwand nicht machen in jedem Funktionsaufruf alle Variablen zu übergeben oder ein struct zu erstellen und dieses dann übergeben. Und jedes mal wenn ich dann in irgendeiner GUI eine zusätzliche Variable erstelle, muss ich jede Übergabe wieder ergänzen.
Wenn ich alles in den base workspace lade, kann ich von überall auf alle Variablen zugreifen und diese ändern.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 25.11.2013, 13:29     Titel:
  Antworten mit Zitat      
sinn besteht darin nur die daten zu übergeben die gebraucht werden.
das jede funktion ihren eigenen workspace hat sorgt dafür das es nicht zu konfliken mit den variablen namen kommt.
es mag auf den ersten blick einfacher erscheinen einfach immer alle variablen hin und her zu schieben... beim debuggen wirds dann aber schon dumm und wenn dann noch jemand anderes teile aus deinem code verwenden will.. oder du selber teile aus deinem code in einem anderen programm verwenden willst drehst druch. irgendwann brauchst du dann 100000 verschiedene variablen namen weil du immer alle hin und her schiebnst anstadt nur die 3 die du brauchst. structs hingegen lassen sich 1. dynamisch erstellen sind 2. übersichtlich und 3. kann man sie ohne probleme weiter bearbeiten da die dynamischen namen mittels fieldnames ausgelesen werden können
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Kenny051990
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 13.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2013, 14:20     Titel:
  Antworten mit Zitat      
Ja gut. Das kann ich nun nachvollziehen. Ich habe meinen Code nun entsprechend verändert und übergebe die Variablen in den Funktionsaufrufen und innerhalb der GUI mit den handles.

Da ich große Datensätze verarbeite, will ich dem Anwender die Möglichkeit geben einen neuen zu bearbeiten, oder einen bereits berechneten Datensatz zu verwenden, da das Berechnen sehr lange dauert (ca. 3min).

Um ein .mat File zu speichern und zu laden muss ich ja dann aber alle benötigten Variablen im base Workspace speichern und bei Weiterverarbeitung aus selbigem auslesen, oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 25.11.2013, 14:31     Titel:
  Antworten mit Zitat      
nunja es giebt da mehree möglichkeiten. structs sind wie gesagt eine. eine andere möglichkeit sind cells um matritzen zu speichern. du kannst die auch beide verschachteln. dann musst du halt immer nur eine eine struct speichern in der deine daten alle gespeichert sind. das ist übersichtlicher.
_________________

richtig Fragen
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 - 2024 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.