Filter löschen
Filter löschen

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

11 Ansichten (letzte 30 Tage)
Divya
Divya am 7 Jun. 2013
Bearbeitet: Stephen23 am 18 Apr. 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 Kommentar
Stephen23
Stephen23 am 22 Feb. 2016
Bearbeitet: Stephen23 am 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'

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu File Operations finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by