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

Nur Dateien aus bestimmten Unterverzeichnissen auswählen

 

keloid
Forum-Century

Forum-Century


Beiträge: 216
Anmeldedatum: 04.10.07
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 12.03.2008, 16:23     Titel: Nur Dateien aus bestimmten Unterverzeichnissen auswählen
  Antworten mit Zitat      
Hallo zusammen,

ich versuche derzeit, nur .mat-Dateien aus Verzeichnissen auszulesen, die nach dem Schema "bla\xyM\" benannt sind. x und y sind dabei Ziffern (während das "M" der Großbuchstabe M ist, aber evtl auf lange Sicht durch ein "pH" ersetzt werden können sollte, je nach späterer Anwendung).

Da ich die .mat-Dateien mittels
Code:
erhalte, schwebt mir etwas ähnliches mit den Pfaden vor.

Wünschenswert fände ich ein Struct path mit den Elementen name und files, wobei path(m).files wiederum ein struct ist, in dem die Namen der .mat-Dateien stehen, so dass ich also mit path(m).files(n).name den Namen einer bestimmten Datei erhalte (denn den brauche ich für die weitere Verarbeitung).

Ich hoffe, die Fragestellung ist klar genug, wenn nicht, einfach nachfragen ;)

Viele Grüße,
k.
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 12.03.2008, 17:03     Titel:
  Antworten mit Zitat      
Hallo,
ich denke da hast du 2 Möglichkeiten.

1. Möglichkeit: die Funktion genpath nutzen
Code:

% Pfade generieren
PathName=pwd;
PathList=genpath(PathName);
% nun trennen
PathList=strread(PathList,'%s','delimiter',pathsep);
for i=1:length(PathList)
files=dir(fullfile(PathList{i},'*.mat'))
mypath(i).name=PathList{i};
mypath(i).files=files;
end
 



2. Möglichkeit: dir
Code:

delDirNames={'.','..'};
PathName=pwd;
PathList=dir(PathName);
PathList={PathList([PathList.isdir]).name};
%entferne '.','..'
PathList=setxor(PathList,delDirNames);
for i=1:length(PathList)
files=dir(fullfile(PathName,PathList{i},'*.mat'))
mypath(i).name=fullfile(PathName,PathList{i});
mypath(i).files=files;
end
 


Der Rest überlasse ich deiner Fantasie.
Private Nachricht senden Benutzer-Profile anzeigen
 
keloid
Themenstarter

Forum-Century

Forum-Century


Beiträge: 216
Anmeldedatum: 04.10.07
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 13.03.2008, 09:14     Titel:
  Antworten mit Zitat      
Mein eigentliches Problem ist, dass ich im Verzeichnis, in dem meine Daten liegen, mehrere Unterordner habe, von denen ich aber nicht alle evaluieren will.

Beispielsweise gibt es da Ordner:
00M
10M
17M
60M
Ausgabe
Mittelwerte

In all diesen Ordnern liegen .mat-Dateien, einlesen möchte ich aber nur diejenigen .mat-Dateien, die in den Ordnern 00M, 10M, 17M und 60M liegen (oder allgemein in Ordnern, deren Name aus zwei Zifffern gefolgt von einem "M" besteht.

Ich werde das Problem aber umgehen, indem die Daten, die zu evaluieren sind, einfach in einem eigenen Unterverzeichnis stehen, so dass dort (bzw. in allen Unterverzeichnissen) nur relevante .mat-Files liegen.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 13.03.2008, 09:39     Titel:
  Antworten mit Zitat      
Hallo,
du kannst aber auch einfach reguläre ausdrücke benutzen:
Code:

PathList=regexp(PathList,'\d\dM','match')
PathList = [PathList{:}];
 


Gesamt sieht es dann so aus:
Code:


delDirNames={'.','..'};
PathName=pwd;
PathList=dir(PathName);
PathList={PathList([PathList.isdir]).name};
%entferne '.','..'
PathList=setxor(PathList,delDirNames);
PathList=regexp(PathList,'\d\dM','match');
PathList = [PathList{:}];
for i=1:length(PathList)
files=dir(fullfile(PathName,PathList{i},'*.mat'));
mypath(i).name=fullfile(PathName,PathList{i});
mypath(i).files=files;
end
 


Code:

% Pfade generieren
PathName=pwd;
PathList=genpath(PathName);
% nun trennen
PathList=strread(PathList,'%s','delimiter',pathsep);
PathList=regexp(PathList,['(.)*\',filesep,'\d\dM'],'match');
PathList = [PathList{:}];

for i=1:length(PathList)
files=dir(fullfile(PathList{i},'*.mat'))
mypath(i).name=PathList{i};
mypath(i).files=files;
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
keloid
Themenstarter

Forum-Century

Forum-Century


Beiträge: 216
Anmeldedatum: 04.10.07
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 13.03.2008, 09:58     Titel:
  Antworten mit Zitat      
Vielen Dank, werd ich bei Gelegenheit ausprobieren.
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 - 2024 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.