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

Variablennamen ändern mit Skript

 

Sören95
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 12.01.21
Wohnort: ---
Version: R2020b
     Beitrag Verfasst am: 06.07.2022, 11:37     Titel: Variablennamen ändern mit Skript
  Antworten mit Zitat      
Moin,

ich stolpere gerade über ein Problem. Ich versuche einen Timetable umzubenennen und suche eine Möglichkeit, das nicht manuell machen zu müssen.

Code:

% das sind zwei Variablen aus dem Workspace:
ncfile = 'Kali_56_his.nc'
his_waterlevel % <-- besagter timetable, der umbenannt werden soll

%der neue Name des Timetables soll lauten:
newname = ['his_waterlevel',ncfile(6:7)]; % newname = his_waterlevel56
 


Wie kann ich die Variable mit einem Skript ändern, ohne manuell den Namen ändern zu müssen?

Besten Dank!
Private Nachricht senden Benutzer-Profile anzeigen


Sören95
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 12.01.21
Wohnort: ---
Version: R2020b
     Beitrag Verfasst am: 06.07.2022, 11:44     Titel:
  Antworten mit Zitat      
Ich habe erst gedacht, dass die Umbenennung der Variable einfach auf diese Weise funktioniert:

Code:
['his_waterlevel',ncfile(6:7)] = his_waterlevel


Aber das klappt leider nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.07.2022, 12:59     Titel:
  Antworten mit Zitat      
Hallo,

prinzipiell ist das mit eval möglich. Allerdings wird damit das Debuggen und das automatisierte Weiterverarbeiten der Variablen schwierig, daher wird generell davon abgeraten.
Wie willst du diese Variable weiterverarbeiten? Werden mehrere solcher Variablen erzeugt, z.B. in einer for-Schleife?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Sören95
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 12.01.21
Wohnort: ---
Version: R2020b
     Beitrag Verfasst am: 06.07.2022, 13:13     Titel:
  Antworten mit Zitat      
Genau, letztlich sollen 20 dieser Variablen in einer for-Schleife erzeugt werden. Es wird immer ein neues ncfile geöffnet und eine his_waterlevel Variabel erstellt, welche dann mit den Ziffern aus der nc-Datei versehen werden sollen. Also genauso, wie in dem Beispiel.

Als nächstes wird ncfile = 'Kali_56,5_his.nc' geöffnet. Mein Skript erstellt dann eine Variable his_waterlevel, welche in his_waterlevel56,5 umbenannt werden soll.

Zur Not könnte ich die Variablen auch manuell umbenennen. Die Anzahl ist ja noch überschaubar, aber ich dachte da würde es eine schickere Möglichkeit geben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

die Frage ist eher, ob man die Variablen überhaupt umbenennen und somit den Workspace "zumüllen" sollte. Alternative könnten Cells / Structs / Tables sein, in denen der nc-Wert und der zugehörige Timetable hinterlegt sind.

Die Frage bleibt:
Wie willst du diese Variablen weiterverarbeiten?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Sören95
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 12.01.21
Wohnort: ---
Version: R2020b
     Beitrag Verfasst am: 08.07.2022, 12:24     Titel:
  Antworten mit Zitat      
Danke für den Hinweis mit dem Struct, das hat mir tatsächlich den entscheidenden Hinweis gegeben. Und übersichtlicher macht es das auch, wenn alle Variablen innerhalb des Structs abgespeichert werden.
Das Stichwort war "dynamic fieldnames".

Code:

ncfile = 'Kali_56_his.nc'
his_waterlevel.([ncfiles(1:7)]) = his_waterlevel;
% daraus ergibt sich ein Struct, wie folgt: his_waterlevel.Kali_56 = his_waterlevel;
 


Der Befehl steht innerhalb einer for-Schleife, in der immer ein neues ncfile geöffnet wird, dessen Namen dann im Struct verwendet wird. Das Thema ist für mich damit geklärt.
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.