我有一个类似以下的文件
10158 18227 2055 24478 25532
12936 14953 17522 17616 20898 24993 24996
26375 27950 32700 33099 33496 3663
...
我想将每一行放在一个数组中,以便分别访问每一行的元素。 我使用了单元格数组,但它似乎为每个单元格元素创建了一个1比1的数组:
fid=fopen(filename)
nlines = fskipl(fid, Inf)
frewind(fid);
cells = cell(nlines, 1);
for ii = 1:nlines
cells{ii} = fscanf(fid, '%s', 1);
end
fclose(fid);
当我访问cells{ii}
时,我获取了同一元素中的所有值,但我无法访问列表值
答案 0 :(得分:2)
较短的解决方案是使用textscan
读取文件:
fid = fopen(filename, 'r');
C = cellfun(@str2num, textscan(fid, '%s', 'delimiter', ''), 'Uniform', false);
fclose(fid);
生成的单元格数组C
正是您所需要的。
答案 1 :(得分:1)
我认为fscanf(fid, '%s', 1);
告诉matlab读取单个字符串的行。您仍然需要将其转换为数字数组:
for ii = 1:nlines
cells{ii} = str2num(fscanf(fid, '%s', 1));
end