Matlab 创建一个单元格数组或多个单元格数组

Matlab 创建一个单元格数组或多个单元格数组,matlab,csv,cell-array,Matlab,Csv,Cell Array,我在一个目录中有一些.csv文件,我想创建一个单元格数组,其中每个单元格都是包含一个.csv文件数据的单元格数组 例如,我的一个名为example.csv的.csv文件可能如下所示: 126; 1; d; 0.0238343 10; 1; d; 8.05893e-08 48; 1; d; 0.000204261 8; 1; d; 3.02726e-08 20; 1; d; 2.17914e-07 41; 1; d; 0.000179662 75; 1; d; 0.00204058 0; 1; d

我在一个目录中有一些.csv文件,我想创建一个单元格数组,其中每个单元格都是包含一个.csv文件数据的单元格数组

例如,我的一个名为
example.csv
的.csv文件可能如下所示:

126; 1; d; 0.0238343
10; 1; d; 8.05893e-08
48; 1; d; 0.000204261
8; 1; d; 3.02726e-08
20; 1; d; 2.17914e-07
41; 1; d; 0.000179662
75; 1; d; 0.00204058
0; 1; d; 2.98228e-17
81; 1; d; 0.00241941
17; 1; d; 4.04806e-06
128; 1; d; 0.0141687
[126]    [1]    'd'    [    0.0238]
[ 10]    [1]    'd'    [8.0589e-08]
[ 48]    [1]    'd'    [2.0426e-04]
[  8]    [1]    'd'    [3.0273e-08]
[ 20]    [1]    'd'    [2.1791e-07]
[ 41]    [1]    'd'    [1.7966e-04]
[ 75]    [1]    'd'    [    0.0020]
[  0]    [1]    'd'    [2.9823e-17]
[ 81]    [1]    'd'    [    0.0024]
[ 17]    [1]    'd'    [4.0481e-06]
[128]    [1]    'd'    [    0.0142]
前两列始终包含整数(第二列只能包含1或0),第三列始终包含单个字符(可以是
d
p
),第四列仅包含浮点数

现在,我对单个文件执行以下操作:

file = fopen('example.csv');
csv_file = textscan(file, '%s%s%s%s', 'delimiter', ';', 'CollectOutput', true);
fclose(file);
csv_file = csv_file{1};
csv_file(:,1) = num2cell( str2double(csv_file(:,1)) );
csv_file(:,2) = num2cell( str2double(csv_file(:,2)) );
csv_file(:,4) = num2cell( str2double(csv_file(:,4)) );
在末尾,变量
csv\u文件
包含如下单元格数组:

126; 1; d; 0.0238343
10; 1; d; 8.05893e-08
48; 1; d; 0.000204261
8; 1; d; 3.02726e-08
20; 1; d; 2.17914e-07
41; 1; d; 0.000179662
75; 1; d; 0.00204058
0; 1; d; 2.98228e-17
81; 1; d; 0.00241941
17; 1; d; 4.04806e-06
128; 1; d; 0.0141687
[126]    [1]    'd'    [    0.0238]
[ 10]    [1]    'd'    [8.0589e-08]
[ 48]    [1]    'd'    [2.0426e-04]
[  8]    [1]    'd'    [3.0273e-08]
[ 20]    [1]    'd'    [2.1791e-07]
[ 41]    [1]    'd'    [1.7966e-04]
[ 75]    [1]    'd'    [    0.0020]
[  0]    [1]    'd'    [2.9823e-17]
[ 81]    [1]    'd'    [    0.0024]
[ 17]    [1]    'd'    [4.0481e-06]
[128]    [1]    'd'    [    0.0142]
我如何才能对目录中的每个.csv文件执行此操作,最终得到一个包含所有单元格数组的变量


我需要它,这样我就可以根据需要处理所有单元格数组,而无需一直将它们提取到变量中。

这是评论中建议您的:

filename=dir;             %attributes
filename={filename.name}; %Extracting filenames
len=length(filename);     %Number of files
files = cell(1,len );     %Pre-allocation
for m=1:len
    file = fopen(filename{k});
    csv_file = textscan(file, '%s%s%s%s', 'delimiter', ';', 'CollectOutput', true);
    fclose(file);

    %Your array manipulations
    csv_file = csv_file{1};
    csv_file(:,1) = num2cell( str2double(csv_file(:,1)) );
    csv_file(:,2) = num2cell( str2double(csv_file(:,2)) );
    csv_file(:,4) = num2cell( str2double(csv_file(:,4)) );

    files{m}= csv_file;   %Saving result of each iteration in an index of a cell array  
end

用于输出文件列表并在其中循环。我这样做了,但是
csv\u文件
将在每个time@SardarUsama对不起,我不明白。你能举个例子吗?把这个放在你的循环中(假设循环计数器“i”):all_files{i}=csv_file;现在我明白了。非常感谢你!