如何加载多个CSV文件并存储在数组中?

时间:2015-10-07 12:15:20

标签: arrays matlab csv

我的CSV文件是A1a(1:853,1:853)类型的光谱数据。 第1列包含波长信息,第2列包含强度信息。

我在文件夹A1a, A1b, A1c.....A1k.csv中有多个CSV文件,我想使用A(10,1:853,1:853)csvread循环将这些文件存储在for类型的数组中。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以将dirdlmread(或csvreaddlmread的包装)一起使用来读取您的数据。此示例假定每个数据文件的大小均匀,并且您知道数据的确切结构:

% Generate some sample data
fID = fopen('A1a.csv', 'w');
fprintf(fID, '%u,%u,%u\n', repmat(1:5, 3, 1));
fclose(fID);

fID = fopen('A1b.csv', 'w');
fprintf(fID, '%u,%u,%u\n', repmat(6:10, 3, 1));
fclose(fID);

fID = fopen('A1c.csv', 'w');
fprintf(fID, '%u,%u,%u\n', repmat(11:15, 3, 1));
fclose(fID);

% Preallocate array if you know for sure how your data is structured
nfiles = 3;
nrows = 5;
ncols = 3;
mydata = zeros(nrows, ncols, nfiles);

% Read in your data
nheaderlines = 0;
nskipcolumns = 0;
filestoread = dir('A1*.csv');

for ii = 1:length(filestoread)
    mydata(:, :, ii) = dlmread(filestoread(ii).name, ',', nheaderlines, nskipcolumns);
end

这会将mydata作为[5x3x3]数组,其中mydata(:,:,1)A1a.csvmydata(:,:,2)A1b.csv,{{1} }是mydata(:,:,3)