Borrar filtros
Borrar filtros

Sorting files in struct according to time in filename

2 visualizaciones (últimos 30 días)
Mathew Smith
Mathew Smith el 21 de Mzo. de 2024
Comentada: Stephen23 el 21 de Mzo. de 2024
Hello,
I have jpg images with names:
t_=_15_s.jpg
t_=_30_s.jpg
...
t_=_900_s.jpg
and I read them using dir(*.jpg) command. Unfortunatelly, they are sorted wrongly (they start with t_=_105_s.jpg), and I would like to correct it.
I would like to ask you for help.
BR
Mathew
  3 comentarios
Mathew Smith
Mathew Smith el 21 de Mzo. de 2024
The cyclist: I have uploaded images with the numbers to the original question so you can try.

Iniciar sesión para comentar.

Respuestas (1)

Stephen23
Stephen23 el 21 de Mzo. de 2024
Editada: Stephen23 el 21 de Mzo. de 2024
You could download my FEX submission NATSORTFILES():
And use it like this:
S = dir('*.jpg');
S = natsortfiles(S);
Or use sufficient leading zeros in the filenames.
  4 comentarios
Voss
Voss el 21 de Mzo. de 2024
If you can't use natsortfiles, here is an alternative:
unzip images
S = dir('*.jpg');
The original order:
{S.name}.'
ans = 22x1 cell array
{'images_105.jpg'} {'images_120.jpg'} {'images_135.jpg'} {'images_15.jpg' } {'images_150.jpg'} {'images_165.jpg'} {'images_180.jpg'} {'images_195.jpg'} {'images_210.jpg'} {'images_225.jpg'} {'images_240.jpg'} {'images_255.jpg'} {'images_270.jpg'} {'images_285.jpg'} {'images_30.jpg' } {'images_300.jpg'} {'images_315.jpg'} {'images_330.jpg'} {'images_45.jpg' } {'images_60.jpg' } {'images_75.jpg' } {'images_90.jpg' }
Sort:
[~,idx] = sort(str2double(regexp({S.name},'\d+','match','once')));
S = S(idx);
Now they are sorted:
{S.name}.'
ans = 22x1 cell array
{'images_15.jpg' } {'images_30.jpg' } {'images_45.jpg' } {'images_60.jpg' } {'images_75.jpg' } {'images_90.jpg' } {'images_105.jpg'} {'images_120.jpg'} {'images_135.jpg'} {'images_150.jpg'} {'images_165.jpg'} {'images_180.jpg'} {'images_195.jpg'} {'images_210.jpg'} {'images_225.jpg'} {'images_240.jpg'} {'images_255.jpg'} {'images_270.jpg'} {'images_285.jpg'} {'images_300.jpg'} {'images_315.jpg'} {'images_330.jpg'}
Stephen23
Stephen23 el 21 de Mzo. de 2024
"I can't install these extensions to my Matlab, but thank you for help."
MATLAB files do not need to be installed: if you can write your own file then you can use this code too.
Just unzip the ZIP-file into the current directory and use it.

Iniciar sesión para comentar.

Categorías

Más información sobre File Operations en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by