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

Felder einer Struktur laden

 

tronic
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 25.08.09
Wohnort: ---
Version: 7.7
     Beitrag Verfasst am: 15.09.2009, 11:57     Titel: Felder einer Struktur laden
  Antworten mit Zitat      
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.

Vielleicht hat ja jmd eine Idee Wink

Gruß
Private Nachricht senden Benutzer-Profile anzeigen


tronic
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 25.08.09
Wohnort: ---
Version: 7.7
     Beitrag Verfasst am: 17.09.2009, 12:34     Titel:
  Antworten mit Zitat      
Hätte jetzt eine Möglichkeit gefunden, die aber nicht gerade schön aussieht und außerdem einen Fehler enthält.

Zum Verständnis nochmal:

Es wird eine mat-file geladen die eine Struktur enthält mit Unterstrukturen als Felder. Diese Unterstrukturen sollen in den Workspace geladen werden.

Code:

[dat, pfad] = uigetfile('*.mat', 'Laden');

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)


liste = fieldnames(unterstructs);

    for i=1:length(liste)
        string = [liste{i}, '=liste.', konfiglist{i}];
        evalin('base', str);
    end
 


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.

MfG
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.09.2009, 13:25     Titel:
  Antworten mit Zitat      
Hallo

Zitat:
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.
Code:

unterstructs = evalin('base', ['Xstruct.',structname{1}]);  
 



ich würde so in der Art Problem lösen:
Code:

[datei, pfad] = uigetfile('*.mat', 'Laden');

Xstruct = load(fullfile(pfad, datei));

structname = fieldnames(Xstruct);                            

unterstructs =Xstruct.(structname{1});  

liste = fieldnames(unterstructs);

for i=1:length(liste)
   eval([liste{i}, ' =unterstructs.(liste{i});']);  
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
tronic
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 25.08.09
Wohnort: ---
Version: 7.7
     Beitrag Verfasst am: 17.09.2009, 13:45     Titel:
  Antworten mit Zitat      
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:

http://www.gomatlab.de/name-der-str.....datei-auslesen-t8174.html

Also besten Dank, denny.

MfG
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.