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

auf struct dynamisch zugreifen

 

laupl
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 15.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2013, 15:16     Titel: auf struct dynamisch zugreifen
  Antworten mit Zitat      
Hallo,
ich habe mehrere .mat-Datein in der Messdaten vergraben sind. Die Daten lade ich so:

Code:

data=load('testdata.mat')
 


Nun möchte ich an eine bestimmte Messreihe kommen. Das sieht dann so aus:

Code:

x9=data.f4_set_W_9.x_values.values
 


An die nächste Messreihe komme ich so:
Code:

x10=data.g8_set_K_10.x_values.values
 


Ich möchte gerne alle Messreihen mithilfe einer Schleife auf einmal einlesen.
Problem ist, dass die strucs immer anders benannt sind. Nur die Zahl vor 'x_values' und alles dahinter ist konstant. Alles was davor steht ändert sich irgendwie und müsste also "ausgeblendet" werden.
Etwa so:

Code:

x=zeros(a,b)
for kk=1:b
x(:,kk)=data.~kk.x_values.values;
end
 


Hoffe das war einigermaßen verständlich.

Geht das irgendwie?


Grüße

Zuletzt bearbeitet von laupl am 22.08.2013, 16:48, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 22.08.2013, 15:49     Titel:
  Antworten mit Zitat      
Hallo laupl
erstmal vorab: Die Erstellung von dynamischen Variablennamen ist ziemlicher Mist, wie du jetzt selber merkst Wink
Man sollte den Index auch als Index verwenden (cell, struct oder so) und nicht in den Variablennamen schreiben.

vllt. hilft dir

Code:


weiter.

Gruß, Kascho
Private Nachricht senden Benutzer-Profile anzeigen
 
laupl
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 15.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.08.2013, 08:23     Titel:
  Antworten mit Zitat      
Hallo,
danke schon mal für diesen Tipp. Das hilft weiter.

Nun bekomme ich also die verschiedenen Variablennamen. Das sieht z.B. so aus:
'irdendwas_56'
'nochwas_23'
'blabla_2'
'name_123'

Das würde ich jetzt gerne so sortieren:
'blabla_2'
'nochwas_23'
'irdendwas_56'
'name_123'

Also nach den Zahlen am Ende. Diese sind halt ein-, zwei- oder dreistellig.

Wie lässt sich das machen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 23.08.2013, 10:25     Titel:
  Antworten mit Zitat      
dazu müsstest du mit strcmp den _ finden denke ich und dann die zahl danach auslesen speichern für alle wiederholen und dann sortieren.
für mich siht das ganze nach einem schlecht gewählten datenformat aus. wichtige sachen im variablen namen unterzubringen ist immer mist ^^
wenn du die möglichkeit hast solltest du vieleicht nochmal über ein anderes datenformat nachdenken. falls nicht musst du jetzt mit dem mist leben den dein vorgänger gemacht hat Smile ich kenn sowas auch. deswegen ist es sehr wichtig im frühem stadion der arbeit sich ein gutes datenformat zu überlegen Smile hab ich früher auch immer vergessen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 23.08.2013, 10:57     Titel:
  Antworten mit Zitat      
Hallo

oder so:

Code:

flds  = {'irdendwas_56','nochwas_23', 'blabla_2', 'name_123' };
nmbr = regexprep(flds ,'[A-Za-z]+_(\d)+','$1')
nmbr = str2double(nmbr);
[nmbr, sortidx ] = sort(nmbr )
flds(sortidx )
 
Private Nachricht senden Benutzer-Profile anzeigen
 
laupl
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 15.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.08.2013, 11:06     Titel:
  Antworten mit Zitat      
Hallo,
erstmal danke für die Antworten.

Ich habe es mittlerweile hinbekommen. Und zwar so ähnlich, wie es Winkow vorgeschlagen hat.
Der Vorschlag von denny funktioniert zwar mit dem Beispiel, mit meinen tatsächlichen Daten aber leider nicht. Ist aber auch egal, weil es haut jetzt ja hin.

Das Datenformat wird mir so von einem Programm ausgespuckt. Heißt ich muss tatsächlich damit leben und kann nichts dafür Wink


Grüße
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.