循环读取大数据文件

时间:2015-11-04 17:45:18

标签: matlab for-loop text-files

我知道,关于这个话题已经提出了很多问题。但是我错过了一些给我错误结果的东西。那么有人可以告诉我哪里出错了。

我在同一目录中有一批大.txt个文件(500 MB - 900MB),序列编号如下。

EXPORT.001.txt,EXPORT.002.txt,EXPORT.003.txt,...... EXPORT.032.txt

我想读取每个文件并按顺序存储变量。

我的代码是

 files = dir('*.txt');
    for file = files'
 [time.file.name,Y_bt.file.name,Y_bc.file.name,X_bt.file.name,X_bc.file.name,X_C.file.name,Y_C.file.name,N_ot_an.file.name,N_ot_dig.file.name,n.file.name,n2.file.name] = import_file(file.name,startRow);
end

import_file是我为读取每个文件而创建的另一个函数。

function [Time,Y_bt,Y_bc,X_bt,X_bc,X_C,Y_C,N_ot_an,N_ot_dig,n,n2] = import_file(filename,startRow)

delimiter = {'\t',' '};
formatSpec = '%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f';
fileID = fopen(filename,'r');
dataArray = textscan(fileID,formatSPec,'Delimiter','MultipleDelimsAsOne',true'EmptyValue',NaN,'HeaderLines',startRow-1,'ReturnOnError',false);

EXPORT = [dataArray{1:end}];
%Defining Individual channels

Time = EXPORT(:,2);
.
.
.
.
n2 = EXPORT(:,21);
fclose(fileID);

clear file ID;

当我运行程序时,我只获取上一个文本文件EXPORT.032.txt中的数据,而其他文件则不会被读取。

我想用程序做的就是为所有.txt文件中的所有变量创建一个结构数组。例如,Time.file.name应该创建一个名为Time的结构,并包含所有数据集中Time的所有变量。我想使用这些数据结构将不同的变量调用到我程序的同一个脚本中。

提前致谢。

1 个答案:

答案 0 :(得分:1)

每次循环迭代都会覆盖所有变量。

for ii = 1:10
    A = ii;
end

将导致A成为值为10的标量。

for ii = 1:10
    A(ii) = ii;
end

将导致A为1到10之间的数组。

使用循环变量file附加到您想要的每个结构上。你似乎有多个嵌套结构,我不确定你想要存储它,但time(file.name)似乎是你正在寻找的。

清理代码的一个好方法是将所有内容存储在函数中的结构中,这样就可以在脚本中将单个结构作为输出调用,使其更易读,更不容易错误。