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.
.
.
.
...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.
Ü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.:
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?
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
Einstellungen und Berechtigungen
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
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.