Read .csv files in the right order

Hello, i have a lot of .csv files do read (around 1500) and need to get a value from each. The problem is that the files appear out of the right order. My code:
list = dir('directory.csv');
numFiles = length(list);
for iFile = 1:numFiles
FileName =list(iFile).name;
Data(iFile).FileName = FileName;
end
for i=1:numFiles
A =dlmread(Data(i).FileName,',',[4 1 4 6]); B(i)=A(1,3);
end
plot(B)
The list structure fills as appear in the picture in attachment.
How can i order the right way?

 Accepted Answer

Stephen23
Stephen23 on 17 Jul 2018
Edited: Stephen23 on 18 Apr 2021
The simplest solution is to download my FEX submission natsortfiles and use it like this:
D = 'C:\directory';
S = dir(fullfile(D,'*.csv'));
S = natsortfiles(S); % alphanumeric sort by filename
for k = 1:numel(N)
F = fullfile(D,S(k).name)
... your code
end

1 Comment

Hello, thank for your response.
I had tried the funtion you mencioned prior but it didn't work. But now its all ok!! It gave me the cell array in the right order.
Thank you very much!!!

Sign in to comment.

More Answers (1)

Akira Agata
Akira Agata on 17 Jul 2018
Edited: Akira Agata on 17 Jul 2018
Please try the following before the for-loop.
list = dir(fullfile(yourDirectory,'*.csv'));
[~, idx] = sort(str2double(regexp({list.name},'\d+(?=.csv)','match','once')));
list = list(idx);

2 Comments

Hello! Thank you but it did not worked. It gave an error on the regexp. Meanwhile i tried the natsortfiles funtion from the other answer and it gave me what i wanted. Thank you for the answer!
Seems strange... But, anyway, it's nice to hear that you now have a solution!

Sign in to comment.

Asked:

on 16 Jul 2018

Edited:

on 18 Apr 2021

Community Treasure Hunt

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

Start Hunting!