필터 지우기
필터 지우기

loading multiple csv files using readmatrix

조회 수: 24 (최근 30일)
julian gaviria
julian gaviria 2023년 10월 19일
편집: Stephen23 2023년 10월 19일
How can I load to matlab workspace multiple matrices with the same dimension located in individual csv files? They have different file names with the same extension (.csv)
Expected variable in workspace: A 3D matrix.
I have tried something like
Folder = 'C:\My\Folder';';
for k = 1 :100
filename = fullfile(Folder, sprintf('%d.csv', k));
data = readmatrix(filename);
...
end
  댓글 수: 3
Dyuman Joshi
Dyuman Joshi 2023년 10월 19일
@julian gaviria, Does the folder containing the csv files have any other files than the ones to be read?
julian gaviria
julian gaviria 2023년 10월 19일
@Dyuman Joshi, no. there is only 1 sheet per .csv file. All the .csv files contain a 2D matrix with the same dimension

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

채택된 답변

Stephen23
Stephen23 2023년 10월 19일
Use DIR:
P = 'C:\My\Folder';
S = dir(fullfile(P,'*.csv'));
for k = 1:numel(S)
F = fullfile(P,S(k).name);
S(k).data = readmatrix(F);
end
All of the imported file data are stored in the structure S. For example, the 2nd file:
S(2).name % filename
S(2).data % file data
  댓글 수: 2
julian gaviria
julian gaviria 2023년 10월 19일
Thanks @Stephen23
How can I arrange all the content of "S(2).data" in a 3D array?
Stephen23
Stephen23 2023년 10월 19일
편집: Stephen23 2023년 10월 19일
"How can I arrange all the content of "S(2).data" in a 3D array? "
A = cat(3,S.data)
But note that the order of the files will be that returned by DIR, which might not be the order you expect. If you require the filenames in alpha-numerical order then you will have to sort S yourself, e.g. by downloading NATSORTFILES:
S = dir(..);
S = natsortfiles(S);
... etc

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

추가 답변 (1개)

Sulaymon Eshkabilov
Sulaymon Eshkabilov 2023년 10월 19일
Here is how you can create such a code:
Folder = 'C:\Users\...';
F_Pat = fullfile(Folder, '*.csv');
FILES = dir(F_Pat);
F_Names={FILES.name};
for k = 1 :length(F_Names)
Get_FName = FILES(k).name;
F_FileName=fullfile(FILES(k).folder, Get_FName);
data{k}= readmatrix(F_FileName);
...
end
All the best
  댓글 수: 1
Sulaymon Eshkabilov
Sulaymon Eshkabilov 2023년 10월 19일
My proposed code works for any file names not necessary file names should be sequential. All collected data in a cell array that can be also altered to store read data as a structure or stacked data of arrays, etc.

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

카테고리

Help CenterFile Exchange에서 Text Files에 대해 자세히 알아보기

제품


릴리스

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by