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

Unterordner nach Reihe abspeichern

 

uzcyi
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 66
Anmeldedatum: 22.12.15
Wohnort: Nähe Pforzheim
Version: ---
     Beitrag Verfasst am: 12.09.2016, 21:16     Titel: Unterordner nach Reihe abspeichern
  Antworten mit Zitat      
Hallo Matlab Community,

ich möchte unter den Ordner data weitere 30-40 Ordner (varriert) pfade abspeichern.
Jeder Unterordner (DATA1,DATA2,DATA3,...) besitzt die Datei'PRC.dat'.
Jedoch speichert Matlab mir als erstes DATA1 danach DATA10 , DATA11 ...

Jedoch sollen es geordnet sein d.h DATA1, DATA2,DATA3,DATA4... und möchte bei den Unterordner die 'PRC.dat' Dateien abspeichern.
Dass heißt zum Schluss soll im Workspace DATA1 = 'PRC.dat' von Unterordner DATA1 , DATA2 = 'PRC.dat' von Unterordner DATA2 definiert sein.

Mein Code :
Code:

directory = 'C:\Users\Max\Desktop\Daten\data;

filelist = dir([directory,'/']);
filelistlength = length (filelist);
pfad= cell(0);
for i=3:filelistlength
    dateiname = [filelist(i).name];
    pfad{i-2,1} = ([directory,'\',dateiname,'\','PRC.dat']);
end
 


wenn ich in Command WIndow
nur 'dir' eingebe erhalte ich :
Code:
dir

.             DATA150  DATA17   DATA22   DATA28   DATA5    
..            DATA13    DATA18   DATA23   DATA29   DATA6    
DATA1     DATA136  DATA19   DATA24   DATA3     DATA7    
DATA10   DATA14    DATA2     DATA25   DATA30   DATA8    
DATA11   DATA15    DATA20   DATA26   DATA31   DATA9    
DATA12   DATA16    DATA21   DATA27   DATA32  


und

Code:
filelistlength =

    35


warum liest MATLAB 35 files ein ? wahrscheinlich [. , ..] was im Ordner nicht vorhanden ist.
Naja dieses Problem umgehe ich ja im Code durch i=3:filelistlength.

Das eigentlich Problem ist, dass der

pfad{1,1} = DATA1
pfad{2,1} = DATA10
pfad{3,1} = DATA11
..

ordnet.
Ich würde gerne dass hier haben:

pfad{1,1} = DATA1
pfad{2,1} = DATA2
pfad{3,1} = DATA3
...

??
Ich bin für jede Hilfe dankbar.
Gruß uzcyi
Vielen Dank im Vorraus
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.09.2016, 14:44     Titel:
  Antworten mit Zitat      
Hallo
Das liegt nicht an Matlab, sondern an Filesystem, welches die Unterordner automatisch ordnet. Man muss die Unterordner richtig benennen, damit diese richtig sortiert werden.
Also statt
DATA1 => DATA01
...
DATA9 => DATA09
DATA10 => DATA10


Zitat:
warum liest MATLAB 35 files ein ? wahrscheinlich [. , ..] was im Ordner nicht vorhanden ist.
Naja dieses Problem umgehe ich ja im Code durch i=3:filelistlength.

Das ist Filesystem spezifische Ordner, z.B:
wenn du in Command folgendes eingibst
Code:

was nicht anderes heißt, wechsle in oben-liegenden Ordner.
Es ist ein Shortcut.
Windows blendet das aus, Linux dagegen zeigt das in Ordnern immer.


Also was du machen kannst, die Ordner-IDs zuerst extrahieren und diese Zahlen sortieren und dann deine Ordner entsprechend sortieren

so:
Code:

directory = 'C:\Users\Max\Desktop\Daten\data';

subdirlist     = dir(directory);
% Man kann von struct to cell extrahieren
subdirs        = {subdirlist([subdirlist.isdir]).name};
% Unterordner "." und ".." entfernen
subdirs        = setdiff(subdirs, {'.', '..'});
subdirlength   = length(subdirs);

% die Zahlen aus Unterordnern extrahieren und konvertieren
subdir_ids        = str2double(regexprep(subdirs, '[^0-9]+(\d+)$', '$1'));

% nach Zahlen sortieren
[subdir_ids, idx] = sort(subdir_ids);
% dazu Sortier-Indizien nehmen und Unterordner richtig sortieren
subdirs           = subdirs(idx);

% wenn du Anzahl der Unterordner kennst, dann initialisiere cell entsprechend
pfad              = cell(subdirlength, 1);
for k = 1:subdirlength
    subdirname = subdirs{k};
    % fullfile setzt Teilpfade zusammen, braucht man sich nicht um Separator zu sorgen
    pfad{k,1}  = fullfile(directory, subdirname,'PRC.dat');
end

 
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.