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

Reihenfolge beim Einlesen von Dateien mit Nummerierung

 

chris0304
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 10.01.15
Wohnort: München
Version: R2014a
     Beitrag Verfasst am: 26.01.2015, 00:32     Titel: Reihenfolge beim Einlesen von Dateien mit Nummerierung
  Antworten mit Zitat      
Liebe Community!

Mit dir() lese ich nummerierte Dateien aus einem Pfad ein. Leider wird dabei die Reihenfolge verändert. Diese Dateien werden später ausgewertet, die Reihenfolge ist dabei jedoch wichtig.

Aus folgender Reihenfolge...

Datei1,Datei2, ... , Datei9, Datei10, Datei11,...

wird...

Datei1, Datei10, Datei11, ... , Datei2, Datei20, ...

Eine Möglichkeit besteht sicherlich darin, erst die Dateien mit den kürzeren Dateinamen einzulesen. Gibt es eine einfachere Lösung dafür, die Dateien in der richtigen Reihenfolge einzulesen?

Danke!!
Private Nachricht senden Benutzer-Profile anzeigen


Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 26.01.2015, 09:41     Titel:
  Antworten mit Zitat      
Moin,

Da ich auch nicht weiß wie man eine andere Sortierung einstellt, würde ich es selber umsortieren:
Code:
dir_info = dir('*.txt');
C = {dir_info.name}';

jj = 1;
kk = 1;
for ii = 1:size(C, 1)
    sz = size(C{ii}, 2);
    if sz == 10
%         C2(jj,1) = C(ii);
        dir_info1(jj,1) = dir_info(ii);
        jj = jj+1;
    elseif sz == 11
%         C3(kk,1) = C(ii);
        dir_info2(kk,1) = dir_info(ii);
        kk = kk+1;
    end
end

% C_neu = [C2; C3];
dir_info_neu = [dir_info1; dir_info2];


Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
chris0304
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 10.01.15
Wohnort: München
Version: R2014a
     Beitrag Verfasst am: 26.01.2015, 19:32     Titel:
  Antworten mit Zitat      
Seban hat Folgendes geschrieben:
Moin,

Da ich auch nicht weiß wie man eine andere Sortierung einstellt, würde ich es selber umsortieren:


Super, vielen Dank für deine Idee. Ich habe sie übernommen, um Dateien erst ihrer Länge nach aufzuteilen, und danach wieder zusammen zu fügen. Das Skript habe ich so verallgemeinert.
Wenn ich beispielsweise alle Dateien im Ordner mit ALT+A markiere und so bis auf die automatisch vergebene laufende Nummer gleich bennene, werden sie wie gewünscht sortiert, bei mir getestet bis 15000 Dateien.

Code:

dir_info = dir('*.txt');
NAMES = {dir_info.name}';

sz=zeros(size(NAMES,1),1);

min_sz=min(sz);   % kürzester Name
max_sz=max(sz); % längster Name

% Durchsucht alle Dateinamen nach deren Länge
for ii=1:size(NAMES,1)
    sz(ii,1)=size(NAMES{ii},2);
end

liste_idx=zeros(size(NAMES,1),1);

anz_find=0;
Names_new=cell(0,0);

for ii=1:(max(sz)-min(sz)+1)                            % Anzahl Schleifen ist Differenz zw längstem und kürzestem Namen.
    liste_idx(:,1)=eq(min(sz)+ii-1,sz(:,1));            % Indexierung der Namen mit gesuchter Länge
    A=find(liste_idx(:,1));                                    % Übertragen der Gefundenen Namen in Array
    anz_find=anz_find+length(A);                        % Zählen der verglichenen Namen
   
    if ii == (max(sz)-min(sz)+1)                        % Letzter Durchgang
        if anz_find~=size(NAMES,1)                      % Fehler, falls nicht alle Namen betrachtet wurden.
            error('Fehler in Länge eines Arrays')
        end
    end
       
    % Namen gesuchter Länge in cell schreiben und sortieren
    Names_zw=cell(0,0);
    for mm=1:length(A)
        Names_zw(size(Names_zw,1)+1,1)=NAMES(A(mm));
    end
    sortrows(Names_zw,1);
   
    % Sortierte Namen in Names_new schreiben
    Names_new=[Names_new;Names_zw];
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.