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?

 Réponse acceptée

Stephen23
Stephen23 le 17 Juil 2018
Modifié(e) : Stephen23 le 18 Avr 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 commentaire

Tiago Tavares
Tiago Tavares le 17 Juil 2018
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!!!

Connectez-vous pour commenter.

Plus de réponses (1)

Akira Agata
Akira Agata le 17 Juil 2018
Modifié(e) : Akira Agata le 17 Juil 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 commentaires

Tiago Tavares
Tiago Tavares le 17 Juil 2018
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!
Akira Agata
Akira Agata le 17 Juil 2018
Seems strange... But, anyway, it's nice to hear that you now have a solution!

Connectez-vous pour commenter.

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by