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

Inhalt von struct ausgeben

 

rudi_
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 18.07.08
Wohnort: ---
Version: R2007a
     Beitrag Verfasst am: 22.07.2008, 15:45     Titel: Inhalt von struct ausgeben
  Antworten mit Zitat      
Hallo!
Ich suche ein Script, das den Inhalt eines structs komplett ausgibt.
Also alle Unterelemente und deren Unterelemente (Vektoren etc.) durchläuft und den Inhalt ausgibt.

Vielen Dank für eure Hilfe!
Rudi
Private Nachricht senden Benutzer-Profile anzeigen


dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2008, 16:35     Titel:
  Antworten mit Zitat      
Hallo,

ich denke
Code:
help struct
help fieldnames
help cell
help isstruct
sollten reichen, um das Skript auch selbst zu coden Razz Ansonsten weisst du ja wo nachfragen.

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
rudi_
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 18.07.08
Wohnort: ---
Version: R2007a
     Beitrag Verfasst am: 22.07.2008, 17:13     Titel:
  Antworten mit Zitat      
Hallo!
Versuche mich daran nun selbst, aber irgendwie habe ich Probleme die Variablennamen zusammenzusetzen.
Ich möchte eigentlich die Ausgabe von s(1).name.k{1}.

Vielen Dank für die Hilfe.
Gruß
Rudi


Code:
K>> s(1).name

ans =

Daten_ausgewaehlt

K>> k{1}

ans =

U_Batt

K>> Daten_ausgewaehlt.U_Batt

ans =

    10

K>> s(1).name.k{1}
??? Attempt to reference field of non-structure array.
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2008, 17:59     Titel:
  Antworten mit Zitat      
Hallo,

versuch mal
Code:
eval([s(1).name '.' k{1}])
.

Allerdings frage ich mich warum du den Namen des Structs auch noch in einer Variable speicherst. Ich habe mir das eher so vorgestellt:
Code:
fldNames = fieldnames(myStruct);
for i=1:length(fieldnames)
           disp(getfield(myStruct,fldNames{i});
end


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Germanus
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 15.12.09
Wohnort: ---
Version: 7.8.0 (R2009b), Linux
     Beitrag Verfasst am: 15.12.2009, 13:42     Titel:
  Antworten mit Zitat      
Hallo,

auch ich suche ein passendes Skript, welches mir die Strukturen (struct) und Unterstrukturen und deren 'Inhalte' ausgibt. Hierbei haben mir oben angegebene Hilfen und Lösungen wie die Funktion "fldNames" nicht weitergeholfen. Mit dieser Lösung erhalte ich nur die erste Unterebene des 'Baums'.

Kann mir jemand sagen ob und wenn ja wie ein plot eines Baumes mit Matlab möglich ist, wie er in der Demo mit der Grafik
Code:
strucdem_helper(1)

dargestellt wird?

Falls dies nicht möglich ist, wäre es nett, wenn mir jemand verraten könnte wie ich die oben beschriebene Funktion "fldNames" (iterativ?) umschreibe, so dass sie auch Unterstrukturen ausgibt.

Oder gibt es eine Möglichkeit struct mit den Befehlen
Code:
treelayout
treeplot

zu durchlaufen?

Abschließend zur Beschreibung meines Problems ein Beispiel:
Ich habe ein Datenblatt mit mehreren Variablen die ich mittels Strukturen (struct) geordnet. Hierbei möchte ich der Strukturen, die vom Projektmanagement vorgegeben werden und z.B. in CAD-Programmen ihre Anwendung finden, Rechnung tragen.
Code:
Fahrzeug.Wagenkasten.Abmasse.Laenge.gesamt=...
Fahrzeug.Laufwerk.Radsatz.Rad.Material.E=220*10^9


Vielen Dank für eure Bemühungen
P.S.: Falls meinen Beitrag komisch aussieht, dann bitte ich, mir das nachzusehen, denn ich bin neu hier!
Private Nachricht senden Benutzer-Profile anzeigen
 
spitfire007
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 11.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2010, 01:50     Titel:
  Antworten mit Zitat      
Hallo,
ich stehe vor dem selben Problem wie mein Vorredner. Ich muss auch ein komplexes Struct-/bzw. Cell-Gebilde auslesen und die Einträge in der letzten Ebene als Variable speichern.
Das ganze muss ja wohl irgendwie in Form einer rekursiven Schleife programmiert werden. Ich hänge jetzt schon seit einiger Zeit an diesem Problem und komme nicht so recht weiter. Kann mir jemand von euch vielleicht einen Denkanstoß geben?
Private Nachricht senden Benutzer-Profile anzeigen
 
Germanus
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 15.12.09
Wohnort: ---
Version: 7.8.0 (R2009b), Linux
     Beitrag Verfasst am: 10.09.2010, 11:23     Titel:
  Antworten mit Zitat      
Hallo spitfire007, hallo liebe Lösungssuchende,

zuerst einmal hier meine Lösung um ein struct, dessen Name bekannt ist, mittels Variablen auszulesen:

Code:

% Die Bezeichnung der zweiten und dritten Ebene des structs wird hier einer Variablen übergeben:  
Platzhalter{1,1} = 'Unterstruktur';
Platzhalter{1,2} = 'UnterUnterstruktur';

% Nun wird das struct fremdgesteuert zusammengebaut. Man beachte hierbei die Variablenwandlung mittels char():
Teststruktur. ...
        (char(Platzhalter{1,1})).(char(Platzhalter{1,2})) = struct()
 


Das ganze lässt sich dann in einer Funktion rekursiv auslesen, allerdings muss man dazu noch das struct ordentlich mit mehreren kleinen Kniffen wie base, assignin etc. übergeben. Die Lösung für dieses Problem und zugleich noch die grafische Ausgabe des structs als Baum mit der (noch) nicht dokumentierten Funktion uitree() ist hier im Forum inzwischen schon beschrieben worden:

Code:


[url] http://www.gomatlab.de/uitree-oder-.....ew-mit-struct-t11710.html [/url]

Allerdings funktioniert der hierbei verwendete Befehl
Code:

nicht, wenn ein Element innerhalb des structs ein Vektor ist, wie z.B.

"MeinStruct(x).UnterStruktur.UUstrukt ; x>1"


So, dann bin ich mal gespannt, was sich bei uitree() noch tun wird!
MFG, Germanu
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.