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

geschachtelte structs in cell umwandeln

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2014, 19:18     Titel: geschachtelte structs in cell umwandeln
  Antworten mit Zitat      
Hallo,

ich habe mehrer .mat-Files welche jeweils u.a. mehere k x 1 structs haben. Diese structs haben (teilweise) als fields wiederum j x 1 structs.

Also zum Beispiel: Messdaten.mat --> Monatsleistung --> Monatsleistung.Jahr2013 --> Monatsleistung.Jahr.2013.Monat04

Jetzt würde ich gerne alles structs in cells umwandel, damit ich einfach per Indizierung drauf zugreifen kann (Will für jedes struct ein script zum einlesen erstellen). Die erste Ebene funktioniert noch, aber bei der 2. gehts nicht mehr:
Code:
for k=1:length(b)
 
         for j=1:length(b{k,1})
                   if isstruct(b{k, 1}{j, 1})==1
                     
                      b{k,1}{j,1}=struct2cell(b{k,1}{j,1});        
              end
         end
   
end


In b hab ich das entsprechende mat-file geladen.
b{k, 1}{j, 1} sind die fields "auf 2. Ebene".
b{k,1} sind schon umgewandelte cells.

Folgende Fehlermeldung kommt:
Code:
Cell contents reference from a non-cell array object.

Error in Skript3 (line 8)
              if isstruct(b{k, 1}{j, 1})==1


Wenn ich aber die isstruct-abfrage für ein entsprechendes struct per Hand ausführe, kommt wie zu erwarten eine 1 raus.

Wieso geht das aber dann nicht im Skript?


PS: Ziel des ganzen ist es, dann für alle Messwerte jeweils nach Jahr, Monat oder Tagesmesswerten sortiert ein Skript zu erstellen,welches die gewünschten Messwerte in Matlab lädt und mann dann sofort das schon erstellte fft-skript ausführen kann.

Vielen Dank schonmal!


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 10.03.2014, 02:02     Titel: Re: geschachtelte structs in cell umwandeln
  Antworten mit Zitat      
Hallo,

Die Fehlermeldung ist eindeutig: Das dazugehörige Inhalt von b{k, 1} ist kein Cell-Objekt, so dass das Indizieren mit {j, 1} nicht möglich ist.

Du kannst Matlab beim Auftreten des problems stoppen lassen und Dir den Inhalt anschauen:
Code:

eingeben und den Code nochmal starten. Wenn Matlab stoppt:
Code:

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2014, 19:41     Titel:
  Antworten mit Zitat      
Hallo,

stimmt, blöder Fehler von mir.
Wenn ich aber vor die 2. for-schleife ein

Code:
if isstruct(b{k, 1})==1

setze, ändert sich auch nichts.

Die 2. Laufzeitvariable muss ich ja bei ==0 trotzdem erhöhen?
 
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.