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

Zuweisung des Inhalts einer Variable in eine andere

 

Stefan12

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.12.2013, 13:14     Titel: Zuweisung des Inhalts einer Variable in eine andere
  Antworten mit Zitat      
Hallo,

ich arbeite an einer GUI, die einen uitable besitzt, in den der Nutzer seine Variablen zuordnen kann.
Dabei gibt er in die erste Spalte die aktuellen Namen der Variablen ein, die sich im Workspace befinden. In die rechte Spalte gibt er den neuen Namen ein, der jedoch den selben Inhalt wie die Variable zu seiner linken haben soll.

Über folgendes Script kann ich nun die Variablennamen, die über das GUI in einer .xls Datei gespeichert werden aufrufen und zuweisen:

Code:
[num,text] = xlsread('TestEinlesenGui', 'Tabelle3');
var1 = text;
nRows = size(var1,1);
n=1;
while n <= nRows
    eval([var1{n,2} '= [var1{n,1}]']);
    n = n+1;
end


jedoch weiß ich nicht wie ich den Inhalt der bestehenden Variable in den der neuen lade.

könnt ihr mir hierbei vllt helfen?


Stefan12

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.12.2013, 16:28     Titel:
  Antworten mit Zitat      
Hab eine Lösung gefunden,

Code:
[num,text] = xlsread('TestEinlesenGui', 'Tabelle3');
var1 = text;
nRows = size(var1,1);
n=1;
while n <= nRows
    x = evalin('base',var1{n,1});
    assignin('base',var1{n,2},x);
    n = n+1;
end
clear var1 nRows n text num



Jetzt wollte ich mich noch erkundigen ob ihr vllt eine andere Variante habt, sodass ich den Befehl assignin umgehen kann?
Jedoch brauch ich die Variable im Workspace.

Danke schonmal
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.12.2013, 14:23     Titel: Re: Zuweisung des Inhalts einer Variable in eine andere
  Antworten mit Zitat      
Hallo Stefan12,

Das ferngesteuerte Erzeugen von Variablen in einem anderen Workspace macht Programme langsam, schlimmer ist aber die Unübersichtlichkeit, die ein Debuggen nahezu unmöglich macht.

Es ist viel geschickter, vor allem wenn die Programme mal wachsen und wirklich benutzt werden sollen, wenn man die Daten in einem Struct speichert und kontrolliert als Output einer Funktion zurückgibt:
Code:
function S = ReadFile(FileName, TableName)
[num, data] = xlsread(FileName, TableName);  % "text" ist ein Befehl, deshalb lieber "data"
S = cell2struct(data(:, 1), data(:,1), 1);

Danach hat man die Variablen als Felder des zurückgegebenen Structs zur Verfügung. Das vermeidet die Probleme, wenn das Excel-File z.B. zufällig Namen enthält, die bereits anderweitig benutzt werden, z.B. auch Namen von Matlab-Funktionen wie "mean", "sin", etc.

Dieses Thema wurde übrigens schon hunderte Male hier zu den Stichworten "eval", "evalin" und "assignin" diskutiert. Eine Suche im Forum wird sich also lohnen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Stefan12

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2013, 08:55     Titel:
  Antworten mit Zitat      
Hallo Jan,

danke für deine Antwort. Ich hab das Forum schon nach möglichen Antworten abgeklappert, leider nichts zu meinem Problem gefunden.

In der Excel-Datei werden nur die Namen der Variablen festgehalten, aber nicht deren Inhalt.
Die GUI, an der ich gerade arbeite, bietet dem Nutzer nur die Möglichkeit der Eingabe aller Parameter.
Z.B welche Daten geladen werden, wie die Variablen für weitere Berechnungen umbenannt werden müssen, welche Funktionen der Reihe nach durchlaufen werden sollen usw.
Diese eingegebenen Daten werden anschließend in der Excel-Datei gespeichert. Die eigentlichen Berechnungen finden über ein seperates Script statt, das via Pushbutton aufgerufen wird und eben das Excel-Sheet als anhaltspunkt nutz.
 
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.