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

Transformation von Daten

 

k@tze
Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 27.12.10
Wohnort: ---
Version: 7.9.0 R2009b
     Beitrag Verfasst am: 20.06.2011, 11:20     Titel: Transformation von Daten
  Antworten mit Zitat      
Hallo,

ich möchte zu Beginn eines Programms Daten generieren. Das sieht im Allgemeinen so aus:

Code:
a.x1.y1.z = 3
a.x1.y2.z = 5
a.x1.y3.z = 7
...
a.x1.yM.z = 4
 


Wie kann ich die z-Werte von jedem y1...yM (M ist eine Zahl) in einem Vektor speichern? Sprich z = [3 5 7 ... 4].

Gruß,
k@tze
Private Nachricht senden Benutzer-Profile anzeigen


Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2011, 12:12     Titel:
  Antworten mit Zitat      
Hi,
also vorweg: Falls du die Daten selber generierst, dann sparst du dir sehr viel Zeit und Arbeit, wenn du sie gleich in einer Matrix speicherst und nicht als struct. Du kannst Matrizen mit (quasi) beliebig vielen Dimensionen definieren, der Zugriff ist wesentlich einfacher!

Falls es aus irgendeinem Grund nicht geht, dann versuche mal folgendes:
Code:

a.x1.y1.z = 3;
a.x1.y2.z = 5;
a.x1.y3.z = 7;
a.x1.y4.z = 4;

vec = zeros(4,1);

for i = 1:4

    str = num2str(i);

    vec(i) = a.x1.(genvarname(['y' str])).z;

end

 


mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
k@tze
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 27.12.10
Wohnort: ---
Version: 7.9.0 R2009b
     Beitrag Verfasst am: 20.06.2011, 12:42     Titel:
  Antworten mit Zitat      
Hi,

danke für deine Antwort und auch deine Bedenken.

Zunächst: der Code funktioniert wie gewünscht.

Zu den structs: Ziel ist es ein benutzerfreundliches Programm (Anwender ohne fundierte Matlab Kentnisse) zu erstellen. Dementsprechend sollen die structs sehr übersichtlich gestaltet sein. So habe ich z. B. Bauteile y1, y2, welche alle eine Eigenschaft z (und einige weitere) besitzen. Der User soll nun auf struct y1 zugreifen können und dort ggf. Daten ändern können. Hat er lediglich den finalen Vektor z, so wird es zu undurchsichtig für ihn. Genauso soll er möglichst leicht ein Bauteil entfernen können. Anstatt jeden Vektor z (und andere) zu ändern, müssen lediglich aufeinanderfolgende Zeilen Code entfernt werden.

Der einmalig benötigte Arbeitsaufwand für mich ist nicht entscheidend. Sollte die Variante aber sehr zeitaufwendig im Programmdurchlauf sein, so muss ich nach Alternativen suchen.

Insofern melde ich mich vielleicht noch einmal Smile

Gruß,
k@tze
Private Nachricht senden Benutzer-Profile anzeigen
 
k@tze
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 27.12.10
Wohnort: ---
Version: 7.9.0 R2009b
     Beitrag Verfasst am: 20.06.2011, 12:51     Titel:
  Antworten mit Zitat      
Kann ich mir eigentlich alle Namen von direkten "unterstructs" eines structs in Form eines String Vektors ausgeben lassen?

Z.B. ausgehend von a soll im obigen Beispiel x1 ausgegeben werden. Ausgehend von a.x1 soll [y1 y2 y3 y4] ausgegeben werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 20.06.2011, 14:22     Titel:
  Antworten mit Zitat      
Hallo k@tze,
guck dir dazu mal
Code:

an.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
k@tze
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 27.12.10
Wohnort: ---
Version: 7.9.0 R2009b
     Beitrag Verfasst am: 21.06.2011, 09:39     Titel:
  Antworten mit Zitat      
Das habe ich gesucht. Danke!

Hier mein Code um in einer Schleife (ohne Vorwissen über Anzahl und Namen der yi) auf alle z's zurückzugreifen:

Code:
c=fieldnames(x1);
for i = 1:size(c)
zz= x1.(char(c(i))).z;
end
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.