using natsortfiles to import csv files correctly

조회 수: 2 (최근 30일)
C.G.
C.G. 2021년 2월 10일
편집: Stephen23 2021년 4월 18일
I have been looking for a way to import many csv files into matlab in the correct order (e.g. csv1, csv2, csv3).
My csv files have a naming structure of c0_1f0_1_0.csv, c0_1f0_1_1.csv etc. Where I want them ordered by the last digit.
I have found the function natsortfiles and have downloaded this from the file exchange and saved it into my working folder, but I am new to this and I am struggling to get it to work in my script from here. Is there anything I am missing or doing wrong?
P = 'E:.....';
S = dir(fullfile(P,'*.txt'));
C = natsortfiles({S.name});
for k = 1:numel(C)
fullfile(P,C{k})
end
  댓글 수: 3
C.G.
C.G. 2021년 2월 10일
sorry for wording my question so confusingly. I have 1000 files, so i want to sort them by the last number.
I have downloaded the zip file from the file exchange, extracted it and put it in my working folder. I am trying to use the code above but it says that natsort files does not exist, so I meant do I have to import anything else before I do this line?
Stephen23
Stephen23 2021년 2월 10일
"but it says that natsort files does not exist"
All of the required files are in the downloaded zip file (you need both NATSORT and NATSORTFILES).

댓글을 달려면 로그인하십시오.

답변 (1개)

Stephen23
Stephen23 2021년 2월 10일
편집: Stephen23 2021년 4월 18일
Taking a guess that you actually want to match the last integer, not just the last digit:
S = natsortfiles(S,'\d+^$'); % alphanumeric sort by filename
Remove the plus if you really just want the last digit.
  댓글 수: 4
C.G.
C.G. 2021년 2월 10일
Thankyou I have got this to work now I have sorted the search path.
Just another question. In the code below, S reads all the files into matlab, and then after that the names are sorted into number order saved in C, but this does not rearrange the files in the structure. If i now manipluate this data more in matlab will it continue to read the files in the correct name order?
P = 'E:...';
S = dir(fullfile(P,'*.csv'));
C = natsortfiles({S.name});
for k = 1:numel(C)
a = fullfile(P,C{k})
end
Stephen23
Stephen23 2021년 2월 11일
편집: Stephen23 2021년 4월 18일
"...but this does not rearrange the files in the structure"
NATSORTFILES will sort a cell array of filenames, but can also sort the DIR structure directly:
>> S = dir('*.txt');
>> S.name
ans =
'1.txt'
ans =
'10.txt'
ans =
'2.txt'
>> S = natsortfiles(S);
>> S.name
ans =
'1.txt'
ans =
'2.txt'
ans =
'10.txt'

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 File Operations에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by