Read multiple .CSV files with csvread using a for loop
30 次查看(过去 30 天)
显示 更早的评论
Hello all, I'm have some trouble developing an algorithm to read multiple files at once and store them in different matrices. Heres a little, but sufficient, description of the problem:
Say I have n files named i_p.CSV, where n is a large enough number to do this procedure manually and i is a number that goes from 1 to n. The file i_p.CSV is a csv file with three columns, so what I would end up have on MATLAB is a matrix called data_i, which would be a (m x 3) matrix, where m is also a very large number.
Any tips on how to proceed?
0 个评论
采纳的回答
dpb
2018-3-24
d=dir('*_p.clv'); % dir struct of all pertinent .csv files
n=length(d); % how many there were
data=cell(1,n); % preallocate a cell array to hold results
for i=1:n
data(i)=csvread(d(i).name); % read each file
end
Now, iff every one of the n .csv files has the same number of rows you can convert to an array...
data=cell2mat(data);
If they aren't all the same length you'll have to augment the shorter to the length of the longest or truncate the longer to that of the shortest.
8 个评论
dpb
2020-2-14
No truly practical way to skip the last line; simply delete it from the read array after reading the file.
Gershon Koral
2021-10-6
This answer is incorrect. The for loop should rather read:
data{i} = csvread(d(i).name);
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 File Operations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!