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

Einlesen aus einer Ordnerstruktur

 

Flame
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 27.09.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.10.2007, 07:52     Titel: Einlesen aus einer Ordnerstruktur
  Antworten mit Zitat      
Hallo,
Ich würde gerne durch einen Ordnerbaum, der jedes Mal neu bestimmt wird, mit meinem m-file durchlaufen, möchte aber dem Nutzer ermöglichen,
den Startordner ähnlich wie im Fileselecter auszuwählen.

Wie traversiere ich nun die Struktur geschickt?
Ich sehe zumindest nirgends, dass bei uigetdir auch die file-Namen oder Unterordner einlesbar sind oder als struct vorhanden wären.

Vielen Dank für eure Hilfe,
Private Nachricht senden Benutzer-Profile anzeigen


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 05.10.2007, 15:38     Titel:
  Antworten mit Zitat      
Hallo Flame,

hilft Dir
Code:
files=dir('name');

weiter? name ist dabei das, was uigetdir liefert, also der ganze Pfad. Das ist zwar nicht wirklich eine Baumstruktur als Ganzes, aber files ist eine struct-Variable, und files.isdir gibt an, ob diejenige Datei ein Ordner ist. Man könnte sich also so weiterhangeln.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Flame
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 27.09.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.10.2007, 17:10     Titel:
  Antworten mit Zitat      
Danke!
Ich werde es Montag gleich ausprobieren.
Ich hoffe, das Forum wächst und gedeiht. Ich hab schon einige nützliche Tipps hier gelesen.
Schönes Wochenende
Private Nachricht senden Benutzer-Profile anzeigen
 
Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 05.10.2007, 23:45     Titel:
  Antworten mit Zitat      
Zumindest addpath lässt sich mit genpath kombinieren
Code:

addpath(genpath('c:\meineskripte'))
 

Entspricht "mit allen Unterordnern dem Suchpfad zufügen".

Leider kann ich es hier nicht testen, aber ich denke es geht für beliebe Verzeichnisse.

Code:
genpath('pfad\zum\startverzeichnis')


sollte die Pfade aller Unterordner enthalten. Eventuell musst Du diese für Dein Skript dann noch in einzelne Pfade zerhacken. Ich bin mir nicht sicher, ob ";" als Trennzeichen verwendet wird, aber falls ja würde ich das so lösen (kann es leider nicht testen - bitte syntax checken)

Code:

allepfade = genpath('pfad\zum\startverzeichnis')
trennpos = strfind(allepfade,';')
pfad{1} = allepfade(1:trennpos(1)-1);   %der erste Eintrag ohne Trennzeichen
for ii = 2:length(trennpos)-1
pfad{ii} = allepfade(trennpos(ii)+1:trennpos(ii)-1) %string zwischen zwei Trennzeichen
end
 

_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Private Nachricht senden Benutzer-Profile anzeigen
 
Flame
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 27.09.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2007, 09:21     Titel:
  Antworten mit Zitat      
Guten Morgen,
inzwischen habe ich das Traversieren des Ordnerbaumes aus beiden Vorschlaegen zusammengebastelt Very Happy . Hier nochmal zur Übersicht für andere User
Nochmal vielen Dank für eure Antworten!!

Code:

allpaths = genpath(directoryName);
disjoin = strfind(allpaths,';');
pathName{1} = allpaths(1:disjoin(1)-1);

for k = 2:length(disjoin)
 pathName{k} = allpaths(disjoin(k-1)+1:disjoin(k)-1);
end;

for k=1:length(disjoin)
 files{k}= dir(pathName{k});
end;

for k=1:size(files)(2)
     filesSize=size(files{k});
     count=0;

     for l=1:size(files{k})(1);

      if (files{k}(l).isdir==0)

       count =count+1;
       filename{count}=files{k}(l).name;

      end;

     end;

% whatever you will do
end;
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 10.10.2007, 17:33     Titel:
  Antworten mit Zitat      
Hallo Flame,

schön zu sehen, dass Dir die Vorschläge weitergeholfen haben. Ich habe noch eine Anmerkung zu deinem Code:

Im zweiten Teil gibt es zwei verschachtelte Schleifen, die durch alle Unterverzeichnisse und dort durch alle files laufen, um ein Cell mit dem Namen+Pfad aller DAteien zu erstellen.

FAlls Dein Code zu langsam ist, könnte man evtl. versuchen diese Abfrage zu beschleunigen. Eventuell (habe leider kein matlab da zum nachschauen) kann man mittels cellfun ein find(... .size ==0) auf alle Einträge auf einmal loslassen, bin mir aber nciht sicher wie das in der Kombinatin von cell und struct funktioniert.

Gruß,
Michaela
_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 10.10.2007, 19:12     Titel:
  Antworten mit Zitat      
unter diesem Link findest Du eine fertige Funktion die bereits das liefert, was Du brauchst - alle Untergeordnete Verzeichnisse und die darin befindeliche Files.
http://www.mathworks.com/matlabcent.....=1492&objectType=file

MfG
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.