Reading multiple csv files and save in a matrix

1 次查看(过去 30 天)
Hello, I have multple csv files in a folder, I want to read them and store in a matrix, further, I also check for any duplicate entry in different files and sort the data in according to year and day. I am attaching one of the csv file here.
I tried foll. code:
SL_files = dir(sprintf('%s%s%s',fullfile(dirName),'\','*.csv'));
for idx = 1:size(SL_files,1)
disp(SL_files(idx,1).name)
fid = fopen(sprintf('%s%s%s',fullfile(dirName),'\',SL_files(idx,1).name));
filedata{idx} = textscan(fid, '%f%f%f %f:%f %f %f','Headerlines',16);
fclose(fid);
end
However, I am getting empty values after column 4. Any help? Thanks!
  1 个评论
Poulomi Ganguli
Poulomi Ganguli 2017-10-13
I solve the problem:
numMat_All = [];
for idx = 1:size(SL_files,1)
disp(SL_files(idx,1).name)
fid = fopen(sprintf('%s%s%s',fullfile(dirName),'\',SL_files(idx,1).name));
data = textscan(fid, '%s %f %f %f %f %f %f', ...
'Delimiter',',', 'MultipleDelimsAsOne',1,'headerlines',16);
fclose(fid);
CharCell = data{1,1};
result = regexprep(CharCell,'[\s;:]+',' ');
numMat = cell2mat(cellfun(@str2num, result(:,1:end), 'UniformOutput', false));
numMat_All = [numMat_All;numMat];
data = []; CharCell = []; result = []; numMat = [];
end
dt = datetime([numMat_All(:,1:5), repmat(0,length(numMat_All),1)]);
T = table(dt,numMat_All(:,[6:7]));
T1 = sortrows(T,'dt');

请先登录,再进行评论。

回答(1 个)

KSSV
KSSV 2017-10-12
Use either xlsread or csvread to read the files.
  3 个评论
KSSV
KSSV 2017-10-12
On using xlsread you can extract the numeric data, text data separately.
Poulomi Ganguli
Poulomi Ganguli 2017-10-12
It won't work since year and time are in different format. Textscan will work in this case. I am looking for some other answer/ way to solve it. Thanks!

请先登录,再进行评论。

Community Treasure Hunt

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

Start Hunting!

Translated by