【发布时间】:2015-11-24 22:53:59
【问题描述】:
我一直在尝试从格式化的文本文件中读取一些数字。 我想从众多列中保留一些列,并且我想将其重复到文件末尾(多行或多行)。
这是我为此编写的代码,但它只读取一行数据。
fid = fopen ('L0512164529','r+');
num_ints = 47;
num_rows = 50;
features = struct;
format =['L%d,',repmat('%f,' , 1 , num_ints-1),'%f'];
[r_dat,l] = textscan(fid, format, num_rows);
features.name=r_dat{1};
features.bodyposfeat=[r_dat{2:end}];
fclose(fid);
每一行都以一个以L 开头的数字开头。文件的前两行是:
L0512164529,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1376599,-0.4387758,0.4723490,0.7519389,0.4742642,-0.8703301
L0512164529,0.0001816,0.0000005,-0.0005697,-1.0843741,0.0001816,0.0000005,-0.0005697,-1.0843741,0.1433973
【问题讨论】:
-
举一个文件前几行的例子。
-
L0512164529,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1376599,-0.4387758,0.4723490,0.7519389,0.4742642,-0.8703301..... L0512164529,0.0001816,0.0000005, -0.0005697,-1.0843741,0.0001816,0.0000005,-0.0005697,-1.0843741,0.1433973.....这些是文本的前两行。每行都以一个以 L 开头的数字开头。
-
你的行有可变列?
-
你也可以试试
fid = fopen(file),然后使用while循环:while ~feofdata(k,:) = fread(fid);k=k+1;end -
如果行的列数不同,则 textscan 不是正确的工具。