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

Cell Array aus Workspace automatisch erstellen

 

n3ssaja
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 12.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.04.2012, 13:53     Titel: Cell Array aus Workspace automatisch erstellen
  Antworten mit Zitat      
Hallo zusammen, nach ausgiebiger Suche in diesem Forum habe ich leider keine passende Antwort auf mein Problem gefunden. Daher eröffne ich einen neuen Thread.

Mein Problem ist folgendes. Ich besitze vier Cell Arrays mit den Namen A,B,C,D im Workspace. Diese wurden zuvor automatisiert erstellt, dass heißt es können je nach Fall auch nur zwei, drei oder beliebig viele andere Cell Arrays erstellt worden sein.

Jetzt möchte ich die Arrays aus dem Workspace in einem gemeinsamen Cell Array "config" zusammenfügen. Die Variablennamen der vorhandenen Cell Arrays liegen vor.

Gibt es nun eine Möglichkeit das übergeordnete Cell Array automatisiert zu erstellen?


Hier ist mein Beispiel Code:

Code:

 x1 = {1 2 3 4};
 x2 = {1 2 3 4};
 x3 = {1 2 3 4};
 x4 = {1 2 3 4};
 
 namen = {'A','B','C','D'};
 
 assignin ('base',namen{1}, x1);
 assignin ('base',namen{2}, x2);
 assignin ('base',namen{3}, x3);
 assignin ('base',namen{4}, x4);
 
 for i=1:4
 config(i)= namen(i)
 end
 


Wie ihr seht stehen jetzt in config lediglich die Namen der vorhandenen Cell Arrays, jedoch nicht die Werte der Cell Arrays.

Schon einmal vielen Dank für Eure Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


n3ssaja
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 12.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.04.2012, 14:11     Titel: Nachtrag
  Antworten mit Zitat      
Bei dieser variante werden zwar die Werte in dem neuen Cell Array gespeichert, jedoch die Cell-Array Namen nicht.

Code:

for i=1:4
     config{i} = eval(namen{1,i})
end
 
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: 12.04.2012, 17:28     Titel: Re: Cell Array aus Workspace automatisch erstellen
  Antworten mit Zitat      
Hallo n3ssaja,

ASSIGNIN und EVAL sind schlechter Programmier-Stil. Einerseits wird Matlab dadurch deutlich gebremst, andererseits wird das Debuggen zum Horror. Zu diesem Thema gibt es hier im Forum hunderte Beiträge.

Wenn Du wirklich Namen und Werte bündeln möchtest, wäre dies in einem Struct sauber und effizient zu machen:
Code:

 x{1} = {1 2 3 4};  % Nicht "x1" !
 x{2} = {1 2 3 4};
 x{3} = {1 2 3 4};
 x{4} = {1 2 3 4};
 
 namen = {'A','B','C','D'};
 for i = 1:length(namen)
   Data.(namen{i}) = x{i};
 end
 

Je komplizierter die Methode ist, um Variablen per EVAL zu erstellen, desto komplizierter müssen auch die Methoden sein, um später wieder darauf zuzugreifen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 12.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.04.2012, 11:22     Titel:
  Antworten mit Zitat      
Hallo Jan!
Vielen Dank für deine Hilfe! Das hat mir sehr geholfen! Jetzt klappt alles wie gewollt^^ Very Happy
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 - 2026 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.