加载多个制表符分隔的文本文件

时间:2013-12-01 00:24:04

标签: matlab file-io

我有大量制表符分隔的文本文件,其中包含1000x2格式的数字数据。 它们被命名为file00001.txt - file10000.txt

我想编写一个脚本来加载这些文件,并创建一个只包含每个文件的第2列的第400行的变量。

之后,我将尝试使用我收集的数据绘制图表 - 但这在这里并不重要。

我非常感谢你的帮助。

编辑 -

我最近的努力是:

numfiles = 10;
mydata = cell(1, numfiles);

for k = 1:numfiles
  myfilename = sprintf('DM0000%d.txt', k);
  mydata{k} = importdata(myfilename);
end

我遇到了一些问题 - 1)如果numfiles> 9,则mydata变量中的第10个文件数据条目为[]。这可能与我文件的命名方法有关?他们以这种方式命名: DM00000 ... DM00009,DM00010,DM00011等

2)这也是很慢的加载,有人说使用fopen,如果是这样我应该把它放在哪里以及如何?

我猜它会出现在fopen('filename','r')的某个地方?

1 个答案:

答案 0 :(得分:0)

根据您的修改,我建议这样做:

numfiles = 10;
row = 400;
column = 2;

data = zeros(1, numfiles);

for k = 1:numfiles
   filename = sprintf('DM%05d.txt', k);
   fid = fopen(filename,'r');
   tempdata = textscan(fid, '%f%f');
   fclose(fid);
   data(k) = tempdata{column}(row);
end

我已更新formatspec中的sprintf以正确创建文件名(您缺少使用零填充的填充)。我正在使用textscan将数据导入为双精度数(如果需要,请将%f更改为其他内容 - 请查看formatspec文档)。我还将data更改为矩阵而不是单元格数组。你提到你想要绘制数据,所以如果它是一个矩阵会更容易,我在这里看不到需要使用单元格数组。