我有大量制表符分隔的文本文件,其中包含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')的某个地方?
答案 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
更改为矩阵而不是单元格数组。你提到你想要绘制数据,所以如果它是一个矩阵会更容易,我在这里看不到需要使用单元格数组。