问题:通常实际工程中产生的.txt文件变量数目在几十至几百量级,数据行数在几十万行至几百万行,数据量会超出内存限制并且读入非常耗时,因此我们难以全部读入,并且在实际问题当中我们只关心部分变量。因此编写matlab程序根据.txt文件首行的变量名提取对应列的数据,只需设置需要提取数据的变量名即可。
clc;clear;close;
fid=fopen('test.txt');
C_text=textscan(fid,'%s',变量名个数,'Delimiter','');%读取变量名列表
parNam=C_text;
str1={'时间','俯仰角','滚转角'};% 需要获取数据的变量名设置
Lstr1=length(str1);
Tcolumn=zeros(Lstr1,1);
for i=1:101
str=strtrim(parNam(i))
for j=1:Lstr1
if(strcmp(str,str1(j))==1) % 获取变量名对应列号
Tcolumn(j)=i;
else
continue;
end
end
end
%% 筛选数据
dataTmp=zeros(行数,Lstr1);
tline=fgetl(fid); %读变量名行
i=1;
while ~feof(fid)
tline=fgetl(fid);
tline0=str2num(tline);
for j=1:Lstr1
dataTmp(i,j)=tline0(Tcolumn(j)); %获取数据
end
i=i+1;
end
%% 绘图