0

我有一个如下文件

 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} 在同一个元素中获得所有值,但我无法访问列表值

4

2 回答 2

2

一个更短的解决方案是读取文件textscan

fid = fopen(filename, 'r');
C = cellfun(@str2num, textscan(fid, '%s', 'delimiter', ''), 'Uniform', false);
fclose(fid);

生成的单元格数组C就是您要查找的内容。

于 2013-05-02T10:07:11.910 回答
1

我认为这fscanf(fid, '%s', 1);是告诉 matlab 读取单个字符串的行。您仍然必须将其转换为数字数组:

for ii = 1:nlines
    cells{ii} = str2num(fscanf(fid, '%s', 1));
end
于 2013-05-02T09:37:26.573 回答