MATLAB: How to load files in numerical order

arraydicomloadorder

Hello everyone,
I am loading multiple dicom files from the same folder using the following code:
imagesFolder = uigetdir('C:\','Select your folder with DICOM files');
filePattern = fullfile(imagesFolder, '*.dcm');
theFiles = dir(filePattern);
for k = 1 : length(theFiles)
baseFileName = theFiles(k).name;
fullFileName = fullfile(imagesFolder, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
imageArray = dicomread(fullFileName);
end
The problem is that I have my files numbered as follows: name1, name 2, …, name10, name11, …, name100, name101, etc. And when I load the files they are inserted in the 3D variable (in this case imageArray) with the following order: name1, name10, name100, name101, …, name109, name11, name110, name111, etc.
In my windows folder I see the files ordered. How can I load the files in order?
Thank you in advance,
Javier

Best Answer

One simple way is to download my FEX submission natsortfiles:
It has plenty of examples and help, so you should not have any problems using it. E.g.:
P = uigetdir('C:\','Select your folder with DICOM files');
S = dir(fullfile(P,'*.dcm'));
C = natsortfiles({S.name}); % sort filenames into alphanumeric order
for k = 1:numel(C)
baseFileName = C{k};
fullFileName = fullfile(P, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
imageArray = dicomread(fullFileName);
end