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 structs zugreifen

 

tolau100
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 27.10.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2010, 14:18     Titel: auf structs zugreifen
  Antworten mit Zitat      
Hallo zusammen,

ich habe folgendes Problem:
In einem .mat-file sind 50 Variablen jeweils mit x Messwerten einer VP hinterlegt. Ich habe ein Script, dass die Messreihe einer VP wie gewünscht verarbeitet.
Nun möchte ich, dass dieses Script für alle Variablen ausgeführt wird, die in dem .mat-file enthalten sind.

Lese ich die Dateien via load ein, erhalte ich leider ein 1x1 "Struct" und in diesem Feld sind nun die 50 Variablen. Doch wie steuere ich diese über Index an? Im Sinne von Struct(1,1) = erste Variable des Mats, (1,2) = zweite Variable, usw..

Hab' jetzt jede Menge über Structs gelesen, getfield, etc., allerdings geht's da immer über mehrere Felder und ich kann mir nicht vorstellen, dass es da keine andere Alternative gibt.. Sonst müsste ich manuell 50x die einzulesende Datei im Skript ändern - und das ist irgendwie blöd Surprised).


Lg,
tolau
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 29.10.2010, 15:14     Titel: Re: auf structs zugreifen
  Antworten mit Zitat      
Hallo tolau100,

Zitat:
Hab' jetzt jede Menge über Structs gelesen, getfield, etc., allerdings geht's da immer über mehrere Felder und ich kann mir nicht vorstellen, dass es da keine andere Alternative gibt.. Sonst müsste ich manuell 50x die einzulesende Datei im Skript ändern - und das ist irgendwie blöd

In diesem Absatz verstehe ich keinen Satz.

Wie wäre es damit:
Code:

Data = load('FileName.mat');
Fields = fieldnames(Data);
for iField = 1:length(Fields)
   Value = Data.(Fields{iField});
   ... Processing
end
 

Damit kannst Du alle Felder des eingelesenen Structs bearbeiten.
Equivalent wäre STRUCT2CELL und dann die einzelnen CELL-Elemente zu benutzen.
Hilft Dir das? Wenn nicht, erkläre bitte "ein 1x1 "Struct" und in diesem Feld sind nun die 50 Variablen" genauer.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
tolau100
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 27.10.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2010, 15:27     Titel:
  Antworten mit Zitat      
Erst einmal sorry für die offensichtlich verwirrende Beschreibung. Um etwas Licht ins dunkel zu bringen: Gebe ich test = load('Daten.mat') ein, erhalte ich im Workspace "test" als "1x1 Struct". Bei Doppelklick auf "test" erscheinen dann untereinander 50 verschiedene Matrizen (ähnlich wie bei einer Zellenstruktur), auf die man zur Detailansicht noch einmal klicken könnte.
Vielleicht war das verständlicher.

Dein field-Vorschlag funktioniert wunderbar, bin wohl an der Syntax (Punkt, geschweifte Klammern) gescheitert.
Werde gleich auch noch den struct2cell-ansatz verfolgen, da für mich Cells doch syntaktisch einfacher zu handhaben sind.

Auf jeden Fall vielen lieben Dank.
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.