2013-05-02 117 views
0

我有如下所示Matlab的:将一个文本文件的每一行中的单独阵列

10158 18227 2055 24478 25532 
12936 14953 17522 17616 20898 24993 24996 
26375 27950 32700 33099 33496 3663 
... 

我想提出每一行中的阵列以分别访问每一行的元件的文件。 我用电池阵列,但它似乎产生1 1阵列的每个电池单元:当我访问cells{ii}我得到了相同的元素的所有值

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); 

,我无法访问列表值

+1

在将每行放入单元格矩阵之前,只有'str2num','str2num'将带有空格的数字字符串转换为数字数组。以我的答案为例。也避免在matlab中使用'i' aa dn'j'变量名,因为它们被保留为'sqrt(-1)' – Dan 2013-05-02 09:55:13

回答

1

我认为fscanf(fid, '%s', 1);告诉matlab读取单个字符串的行。你还必须把它转换为数字的数组:

for ii = 1:nlines 
    cells{ii} = str2num(fscanf(fid, '%s', 1)); 
end 
+0

我之所以这样使用,是因为我不知道每行中元素的数量 – saloua 2013-05-02 09:40:52

+0

@tuxworker请参阅编辑如何将字符串转换为数组数组 – Dan 2013-05-02 09:50:16

+0

感谢您的回答 – saloua 2013-05-02 09:59:09

2

较短的解决办法是阅读文件,textscan

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

产生的单元阵列C是你在找什么。

相关问题