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

Namen aus Cell einer Variablen im Workspace zuweisen

 

Slamdunker23
Forum-Century

Forum-Century


Beiträge: 101
Anmeldedatum: 03.11.09
Wohnort: Stuttgart
Version: R2012b
     Beitrag Verfasst am: 13.01.2012, 13:28     Titel: Namen aus Cell einer Variablen im Workspace zuweisen
  Antworten mit Zitat      
Hallo zusammen!
Ich stehe vor folgendem Problem:
In meinem Workspace befindet sich eine Variable channellist, eine Cell mit verschiedenen Strings, die Variablennamen enthalten (beispielsweise: channellist(1) = 'Test').
Desweiteren gibt es mehrere Variablen, die Zahlen enthalten (beispielsweise: Geschwindigkeit = [0;1;2;3]).

Wie heißt in Matlab der Befehl, damit ich der Variable Geschwindigkeit den Namen 'Test' aus der channellist(1) zuweisen kann? Also die Variable Geschwindigkeit soll ihre Werte behalten, es soll sich nur der Name ändern!

Danke für eure Hilfe!

Herzliche Grüße!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

du kannst das mit EVAL oder ASSIGNIN machen. Ich würde dir jedoch empfehlen, das nicht zu tun, da du dich sonst den Rest deines Programms mit EVAL und ASSIGNIN herumschlagen musst.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Slamdunker23
Themenstarter

Forum-Century

Forum-Century


Beiträge: 101
Anmeldedatum: 03.11.09
Wohnort: Stuttgart
Version: R2012b
     Beitrag Verfasst am: 13.01.2012, 15:04     Titel:
  Antworten mit Zitat      
Ich habe beide Befehle versucht, komme aber auf kein Ergebnis, denn bei beiden muss ich links vom Gleichheitszeichen einen Namen schreiben:
'xyz = assignin...' oder 'xyz=evalin...'.
und genau das will ich ja nicht. Der Name der Variable soll ja aus einer anderen Variablen kommen.
Könnt ihr mir bitte den genauen Befehl dafür nennen?

Danke schön!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.01.2012, 15:15     Titel:
  Antworten mit Zitat      
Hallo,

Code:
eval([neuername ' = altername;'])
eval([channellist{1} ' = Geschwindigkeit;'])
 


Ich darf mich wiederholen:
Zitat:
Ich würde dir jedoch empfehlen, das nicht zu tun, da du dich sonst den Rest deines Programms mit EVAL und ASSIGNIN herumschlagen musst.


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Slamdunker23
Themenstarter

Forum-Century

Forum-Century


Beiträge: 101
Anmeldedatum: 03.11.09
Wohnort: Stuttgart
Version: R2012b
     Beitrag Verfasst am: 16.01.2012, 11:15     Titel:
  Antworten mit Zitat      
Guten Morgen!
Der eval-Befehl steht am Ende meiner Matlab-Funktion, somit stört mich das nicht weiter. Ich werde aber deine Info für später berücksichtigen!

Ich habe noch eine weitere Frage:
Ich habe ein Matlab-Script geschrieben, bei dem am Ende der besagte eval-Befehl vorkommt und dabei unterschiedliche Variablen definiert werden.
Wie kann ich das Programmieren, dass am Ende genau diese Variablen im Workspace gespeichert bleiben?
Der normale save-Befehl speichert mir ja die Variable allgemein in einem Ordner ab.

Danke für die Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen
 
Pinky
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 14.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2012, 13:05     Titel:
  Antworten mit Zitat      
Hallo,

ich kann mich irren, aber geht das nciht über den Syntax:

Code:
[x1,x2,...]=Funktion(y)


damit sollten die Variablen von der Funktion in den Workspace übergehen.

gruß Pinky
Private Nachricht senden Benutzer-Profile anzeigen
 
Slamdunker23
Themenstarter

Forum-Century

Forum-Century


Beiträge: 101
Anmeldedatum: 03.11.09
Wohnort: Stuttgart
Version: R2012b
     Beitrag Verfasst am: 16.01.2012, 15:02     Titel:
  Antworten mit Zitat      
Hallo, ja das ist die eleganteste Variante Smile Die Funktion wird mit ihren Eingangsparametern im command windows aufgerufen und die Endvariablen werden ausgegeben.

Das stellt sich bei mir etwas schwierig da, da die Anzahl der Eingangsvariablen (x1, x2,...) bei jedem Aufruf variieren können. Somit wollte ich das eigentlich gar nicht über deinen Funktionsaufruf machen, sondern einfach nach manuellem Starten des Scripts die Endvariablen im WS speichern.

Gruß, Slamdunker23
Private Nachricht senden Benutzer-Profile anzeigen
 
Pinky
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 14.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2012, 15:08     Titel:
  Antworten mit Zitat      
Hallo,

das ist natürlich schwierig, wenn das Zufällig geschieht. Allerdings ist die Anzahl für jeden Aufruf ja fest und das solltest du als Ausgabe oben reinschreiben können.
Im schlimmsten Fall machst du einfach eine structure aus den (für den einzelnen Lauf ja bekannten) Variablen und gibst die aus.

gruß Pinky
Private Nachricht senden Benutzer-Profile anzeigen
 
soad
Forum-Century

Forum-Century


Beiträge: 150
Anmeldedatum: 10.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2012, 23:18     Titel:
  Antworten mit Zitat      
Slamdunker23 hat Folgendes geschrieben:
Das stellt sich bei mir etwas schwierig da, da die Anzahl der Eingangsvariablen (x1, x2,...) bei jedem Aufruf variieren können.


siehe:
Code:
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 17.01.2012, 09:53     Titel:
  Antworten mit Zitat      
Hallo

du hast doch deine Variablennamen in channellist, welche du abspeichern möchtest?
einfach an SAVE diese Liste übergeben
Code:

save('meinedatei.mat', channellist{:})
 


wenn es ums Löschen der Variablen geht dann so

Code:

varlist = whos()
varlist = {varlist.name}
varlist = setdiff(varlist,channellist);
clear(varlist{:})
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Slamdunker23
Themenstarter

Forum-Century

Forum-Century


Beiträge: 101
Anmeldedatum: 03.11.09
Wohnort: Stuttgart
Version: R2012b
     Beitrag Verfasst am: 17.01.2012, 13:57     Titel:
  Antworten mit Zitat      
Hallo,
ja das mit der save-Funktion funktioniert soweit. Dann werden die Channels nach dem Ende des Scripts in der Current Directory gespeichert und zur weiteren Verarbeitung im Workspace muss ich einfach nur diese Datei laden.

Vielen herzlichen Dank!
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.