Verfasst am: 15.09.2009, 11:57
Titel: Felder einer Struktur laden
Hallo,
folgendes Problem:
ich habe in einer mat-file eine Struktur, die weitere Unterstrukturen enthält.
Jetzt möchte ich alle Unterstrukturen in den Workspace laden und die entsprechenden Namen in einer Listbox ausgeben lassen.
Gibt es eine Möglichkeit auf einfache Weise diese Unterstrukturen zu laden ?
Habe bis jetzt die "Oberstruktur" selbst in den Workspace geladen, weiß aber nicht wie ich jetzt die Felder (=Unterstrukturen) quasi aus der Oberstruktur rauspacke und ebenfalls im workspace speichere.
Xstruct = evalin('base', ['load(''', [pfad datei], ''')']); %laden der datei>OK
structname = fieldnames(Xstruct);
% name der obersten struktur (gibt ja nur diese)
unterstructs = evalin('base', ['Xstruct.',structname{1}]);
% Fehler! % Undefined variable "Xstruct" or class "Xstruct.beispiel". % (beispiel ist der name der obersten Struktur)
Irgendwie scheint es da Probleme mit der Interpretation von Xstruct als variable zu geben... wenn ich das ganze in Matlab (im Command Window)
eintippe funktionierts... nur zur Laufzeit nicht
Edit:
Fehler gefunden... findet ja alles nur im Base-workspace statt.
Bleibt also die Frage ob das ganze einfacher geht.
Irgendwie scheint es da Probleme mit der Interpretation von Xstruct als variable zu geben... wenn ich das ganze in Matlab (im Command Window)
Wenn ich richtig verstehe, dann hast diesen Code in Funktion eingebaut?
Jede Funktion hat so genannten eigenen Arbeitsbereich.
Wird eine Variable in einer Funktion definiert, dann ist diese Variable nur für diese Funktion sichtbar.
Über evalin kann man Arbeitsbereich bestimmen, wo der Codezeile ausgeführt wird und in Variable in aktuellen Arbeitsbereich übergeben.
z.B du versucht aus Xstruct aus Command Window Workspace zu holen.
Die ist dort aber nicht definiert.
Ja, genau so hab ichs jetzt auch gemacht. Bis auf "evalin()"... da hab ich jetzt
mithilfe assignin einfach aus den "lokalen" Variablen die Strukturen
im Workspace erzeugt.
Hab auch grad nen Thread gelesen bei dem im Prinzip genau das Problem behandelt wurde:
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.