Προς το περιεχόμενο

ταξινομηση txt αρχειων (matlab)


matuser

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα!

Εχω σε ενα folder 100 txt αρχεια απο τα οπoια θελω να φορτωσω τα δεδομενα τους.Με την dir δημιουργω μια δομη αυτων την οποια χρειαζομαι για την μετα επεξεργασια.Το θεμα ειναι οτι στην δομη που χρησιμοποιειται τα αρχεια δεν ειναι με την σειρα.Θελω να κανω μια ταξινομηση οπου το text1.txt να ειναι πρωτο στη συνεχεια το text2.txt κτλ μεχρι το text100.txt.Ουσιαστικα να ειναι με αυξουσα σειρα.Ξερει κανεις πως γινεται αυτό; Δοκιμασα την sort αλλα ειναι μονο για ταξινομηση στοιχειων πινακων.Υπαρχει καποια για ταξινομηση στοιχειων μιας struct;

Δημοσ.

1. Η λετσολύση:

 

> Η ταξινόμηση στον explorer των windows είναι αλφαβητική; Αν όχι βάλτην. Νομίζω ότι θα δουλέψει

 

2. Η δική μου

>
file_names=dir('D:\Publications\30_NRL\current_field_video\current\*.txt');
file_names_sorted=sort({file_names.name});

 

3. H σίγουρη χωρίς χρήση dir (ίσως να χει κάποιο συντακτικό λάθος)

 

>
for cntr=1:1:100;
cntr_str = num2str(cntr,'%2i');
%Οι επόμενες 3 γραμμές χρειάζονται αν η αρίθμηση είναι με 01, 02...09 και όχι 1,2...,9  
   	if length(cntr_str) == 1;
       	cntr_str = ['0',cntr_str]; 
   	end

   	fin = ['D:\Publications\30_NRL\current_field_video\current\text', cntr_str , '.txt'];
  	
   	if  (exist(fin) > 0)
       	disp(fin)
       	data= load(fin);
   	end

end

 

4. H εκτός MATLAB, σε dos κονσολα δίνεις

 

>dir D:\Publications\30_NRL\current_field_video\current\*.txt /O:N > filenames.txt

 

και μετά φορτώνεις στη Matlab πρώτα το filenames.txt και κάνεις τη δουλειά σου.

Δημοσ.

1. Η λετσολύση:

 

> Η ταξινόμηση στον explorer των windows είναι αλφαβητική; Αν όχι βάλτην. Νομίζω ότι θα δουλέψει

 

2. Η δική μου

>
file_names=dir('D:\Publications\30_NRL\current_field_video\current\*.txt');
file_names_sorted=sort({file_names.name});

 

3. H σίγουρη χωρίς χρήση dir (ίσως να χει κάποιο συντακτικό λάθος)

 

>
for cntr=1:1:100;
cntr_str = num2str(cntr,'%2i');
%Οι επόμενες 3 γραμμές χρειάζονται αν η αρίθμηση είναι με 01, 02...09 και όχι 1,2...,9  
   	if length(cntr_str) == 1;
       	cntr_str = ['0',cntr_str]; 
   	end

   	fin = ['D:\Publications\30_NRL\current_field_video\current\text', cntr_str , '.txt'];
  	
   	if  (exist(fin) > 0)
       	disp(fin)
       	data= load(fin);
   	end

end

 

4. H εκτός MATLAB, σε dos κονσολα δίνεις

 

>dir D:\Publications\30_NRL\current_field_video\current\*.txt /O:N > filenames.txt

 

και μετά φορτώνεις στη Matlab πρώτα το filenames.txt και κάνεις τη δουλειά σου.

 

 

Δοκιμασα τις δυο λύσεις με τους κωδικες.Στην πρωτη περιπτωση (2) δημιουργηθηκε ο cell array αλλά και παλι τα αρχεια δεν ηταν ταξινομημενα ενω στη δευτερη (3) δημιουργηθηκε μια δομη με τον αριθμο 100 :( .Το path D:\Publications\30_NRL\current_field_video\current\text' τι ακριβως σημαινει; Τελος οταν εδωσα την εντολή στην κονσολα βγηκε το εξής μηνυμα :"Το συστημα δεν ειναι σε θεση να εντοπισει την καθορισμενη διαδρομη δισκου".Τι κανω λάθος;

Δημοσ.

ότι χρησιμοποιείς path όπου βρίσκονται τα δικά μου αρχεία, βάλε το δικο σου path.

 

Edit: Η μεταβλητή data που έχω βάλει κάθε φορά γράφεται από το καινούριο txt αρχειο που διαβάζεται, επομένως ναι στο τέλος θα είναι το text100.

 

Επομένως αυτό που πρέπει να κάνεις είναι να κάνεις πράξεις ή οτιδήποτε άλλο θες μετά την εντολή

data= load(fin);

 

και πριν πάει στο επόμενο βήμα.

 

 

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...