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

mat files und struct files

 

matfrag
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 09.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2013, 14:10     Titel: mat files und struct files
  Antworten mit Zitat      
hallo ich habe noch nicht viel erfahrung mit matlab und nun habe ich folgendes problem:

ich habe 102 _dat.mat files und möchte diese in den workspace laden. das klappt mit der schleife auch ganz gut. jetzt sieht der inhalt jedes files genau gleich aus. also gleiche bezeichnung für variablen mit unterschiedlichen daten. wenn ich die struct öffne stehen da weitere struct und dann kommen die variablen. ich möchte jetzt, das matlab mir aus jedem mat file die variable raussucht und in einer neuen matrix speichert.
time=[d.use.utcday] wäre die erste spalte.
d ist meine erste struct
use die zweite und utcday ist meine variable in der die werte stehen. meine schleife sieht so aus:

Code:
dr=dir('*.mat'); % read content of currrent directory
ldr=length(dr);
for i=1:ldr % search for .mat
    fln=dr(i).name; % get filename
    [pathstr, name, ext] = fileparts(fln); % get filename parts
     if strcmpi(ext,'.mat') % if .mat
        load(fln);
     end
  end


am ende steht immer nur das letzte d in meinem workspace. kann mir irgendjemand helfen?
vielen dank schon mal!
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: 09.01.2013, 15:02     Titel: Re: mat files und struct files
  Antworten mit Zitat      
Hallo matfrag,
Code:
dr=dir('*.mat'); % read content of currrent directory
ldr = length(dr);
Data = cell(1, ldr);
for ii=1:ldr % search for .mat
    Data{ii} = load(dr(ii).name);
end

Ich verwende ii statt i, um den Wert der imaginären Einheit nicht zu überschreiben.
Das Testen der File-Extension ist nicht nötig, weil "dir(*.mat')" sowieso nur MAT-Files zurückgibt.
MAT-Files per LOAD direkt in den Workspace zu laden ist eine sehr tückische Sache. Es könnte ja der Wert einer lokal benutzten Variablen überschrieben werden. Deshalb ist immer dringend anzuraten, die Ausgabe von LOAD in einer Variablen zu speichern. Das kann wie hier ein CELL sein, oder falls alle MAT-Files den gleichen Inhalt haben auch ein STRUCT-Array.

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

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 09.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2013, 15:13     Titel:
  Antworten mit Zitat      
hallo vielen dank für die antwort.
ja ok, das geht auch. mein problem ist jetzt nur, dass ich gerne irgendwo in dieser schleife sagen möchte, dass es in jedem einzelnen mat file eine variable utcday gibt. diese würde ich gerne in chronologischer reihenfolge in einem vektor oder einer matrix abspeichern. weil sonst kann ich mir immer nur einen teil angucken ich möchte aber meine ganze datenreihe als kompletten plot haben.
kannst du mir da auch noch helfen?
Private Nachricht senden Benutzer-Profile anzeigen
 
matfrag
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 09.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2013, 15:50     Titel:
  Antworten mit Zitat      
hab die lösung. ich hab mal wieder viel zu kompliziert gedacht!! Evil or Very Mad
hier der endgültige code:

Code:
time=[];

dr=dir('*.mat'); % read content of currrent directory
ldr=length(dr);
for ii=1:ldr % search for .mat
    fln=dr(ii).name; % get filename
    [pathstr, name, ext] = fileparts(fln); % get filename parts
    load(fln);
    time_new=d.use.utcday;
    time=[time time_new];
   
end


einfach nur an die richtige stelle in der schleife und fertig.
ich hoffe es hilft auch anderen!
vielen dank nochmal für die hilfe!
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.