How to sort the order given by 'dir' command ???

16 vues (au cours des 30 derniers jours)
Divya
Divya le 7 Juin 2013
Modifié(e) : Stephen23 le 18 Avr 2021
I am reading the images from a folder by using the below code
[folder1] = uigetdir();
f=dir(folder1);
for k=1:size(f,1)-2
file_n=f(k+2).name;
end
The images in the folder are "test_base1", "test_base2", .... but the order in which 'dir' taking is "test_base1","test_base10","test_base2".. I understood that the command is taking ascii-betical order.. I have gone through the previous questions and answers. It seems complicated. Can any one give a good solution to sort the order of Images after using "dir"
  1 commentaire
Stephen23
Stephen23 le 22 Fév 2016
Modifié(e) : Stephen23 le 18 Avr 2021
You could download my FEX submission natsortfiles:
>> S = dir('*.txt');
>> S.name
ans =
'1.txt'
ans =
'10.txt'
ans =
'2.txt'
>> S = natsortfiles(S); % alphanumeric sort by filename
>> S.name
ans =
'1.txt'
ans =
'2.txt'
ans =
'10.txt'

Connectez-vous pour commenter.

Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 7 Juin 2013
file={'test_base1','test_base10','test_base2'}
[idx,idx]=sort(cellfun(@(x) str2num(char(regexp(x,'\d*','match'))),file))
new_file=file(idx)
  3 commentaires
Divya
Divya le 8 Juin 2013
I am facing an error with a different input for this expression. For file = {'test_30min1','test_30min10','test_30min2'}; it gives error as follows
??? Error using ==> cellfun
Non-scalar in Uniform output, at index 1, output 1.
Set 'UniformOutput' to false.
I tried giving "regexp(x,'\w*','match')" and many other combinations in this expression. I am not able to get the solution. May i know what is the solution for this??
Divya
Divya le 8 Juin 2013
Hey "regexp(x,'\d*$','match')" is working for this problem. Thanks anyhow

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur File Operations dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by