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

3 visualizzazioni (ultimi 30 giorni)
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 Commento
Stephen23
Stephen23 il 22 Feb 2016
Modificato: Stephen23 il 18 Apr 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'

Accedi per commentare.

Risposta accettata

Azzi Abdelmalek
Azzi Abdelmalek il 7 Giu 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 Commenti
Divya
Divya il 8 Giu 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 il 8 Giu 2013
Hey "regexp(x,'\d*$','match')" is working for this problem. Thanks anyhow

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by