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

Dynamischen Variablennamen abspeichern?

 

Waldemar
Forum-Century

Forum-Century


Beiträge: 100
Anmeldedatum: 14.10.11
Wohnort: Neuss
Version: R2011b
     Beitrag Verfasst am: 23.02.2013, 02:04     Titel: Dynamischen Variablennamen abspeichern?
  Antworten mit Zitat      
Hallo,

in einer Schleife erzeuge ich in Abhängigkeit von einer Größe f verschiedene Daten, die sich in Abhängigkeit von f unterscheiden. Um diese später bearbeiten zu können, soll die Größe f im Variablennamen der Daten erkennbar sein.

Nehmen wir an:
Code:

.
.
.
f=3;
% erzeugt A
% Gewünscht wäre A3:
assignin('base', ['A_' num2str(f)],A);
% Allerdings wie speichere ich einen dynamischen Variablennamen ab?
eval(['save Fall' num2str(f) '.mat ??'])
eval(['save Fall' num2str(f) '.mat A'])  % Klappt, aber ich hätte gern, dass da A3 steht.
.
.
.

 


Irgendwie dreht sich meine Frage um das Thema: Wie kriege ich dynamische Variblennamen auf die linke Seite des Gleichheitszeichens, oder?

Verzwickt.

Wäre super, wenn mir jemand helfen könnte.

MfG, Waldemar
_________________

Im "ich brauch Hilfe"-Status
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: 23.02.2013, 04:35     Titel: Re: Dynamischen Variablennamen abspeichern?
  Antworten mit Zitat      
Hallo Waldemar,

Zitat:
...soll die Größe f im Variablennamen der Daten erkennbar sein.

Nein, das sollte sie auf jeden Fall nicht. Der Namen einer Variable sollte die Klasse der Daten beschreiben, aber eben nicht den Inhalt. Denn der Inhalt ist die Beschreibung des Inhaltes. Versuche, den Namen von Variablen dynamisch zu bestimmen, machen Programme deutlich komplizierter als nötig, wie Du selbst gerade merkst. Das Debuggen wird grausam und die Laufzeit deutlich länger.
Also, bitte mache das nicht.

Code:
eval(['save Fall' num2str(f) '.mat ??'])

Code:
% Nein, sondern:
save(sprintf('Fall%d.mat', f));

Über die Nachteile von EVAL wurd hier im Forum schon viel geschrieben, eine Suche enthüllt also mehr Details. Es gibt immer eine bessere Lösung als EVAL! Das gleiche gilt für ASSIGNIN und EVALIN. Eineg geordnete Übergabe von Inputs und Outputs einer Funktion ist immer weitaus hilfreicher.

Wenn Du Meta-Daten für eine Zeitreihe speichern möchtest, wäre ein Struct geeignet, z.B.:
Code:
S(1).Messdaten = [1,4,,2,3,6,78,9,7,56,4,3,2];
S(1).MessBedingung = 'mit Gas'

Das lässt sich sehr leicht auf 1000 verschiedene Messbedingungen erweitern, während das Verstecken der Messbedingung im Variablennamen wie "Messdaten_1_mitGas" dann schon zu vollkommen unüberschauberem Code führen würde. Ok?

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

Forum-Century

Forum-Century


Beiträge: 100
Anmeldedatum: 14.10.11
Wohnort: Neuss
Version: R2011b
     Beitrag Verfasst am: 27.02.2013, 18:46     Titel:
  Antworten mit Zitat      
Hallo Jan S,

da mich diese Frage in der Nacht, in der ich auch meine Nachricht geschrieben hatte, dermaßen gequält hat, kam ich zum Glück auf eine eigene Lösung (Nicht erwähnenswert).

Aber die struct-Lösung werde ich mir merken...super Sache!

Danke jedenfalls für deine Antwort.

MfG, Waldemar
_________________

Im "ich brauch Hilfe"-Status
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.