Matlab读取TXT文件并跳过中间几行的问题!!
#!MLF!#"*/group1.rec"011300000sil-3797.347412SENT-START1130000011600000dh-156.719879t...
#!MLF!#
"*/group1.rec"
0 11300000 sil -3797.347412 SENT-START
11300000 11600000 dh -156.719879 the
11600000 11900000 ax -208.465164
11900000 11900000 sp -1.203973
11900000 12500000 ih -482.533112 information
.
"*/group2.rec"
0 9800000 sil -3021.529053 SENT-START
9800000 10100000 dh -142.646698 the
10100000 10400000 ax -214.386246
10400000 10400000 sp -1.203973
10400000 10900000 ih -421.761047 information
.
"*/group3.rec"
0 8900000 sil -2576.518555 SENT-START
8900000 9200000 dh -142.900620 the
9200000 9500000 ax -245.424423
9500000 9500000 sp -1.203973
9500000 9900000 ih -343.396576 information
如上边TXT文档内容有三组数据,我不想要这三组数据的两行标题,只想要从0到information中间的矩阵。请问编程才能跳过这两行标题不读,直接读取矩阵?
QQ44380251
每组数据都要计算,就是说读到第一个information后开始计算前边的数据,然后跳过两行在读取第二组数据并计算。计算内容就是矩阵的第二列减第一列 展开
"*/group1.rec"
0 11300000 sil -3797.347412 SENT-START
11300000 11600000 dh -156.719879 the
11600000 11900000 ax -208.465164
11900000 11900000 sp -1.203973
11900000 12500000 ih -482.533112 information
.
"*/group2.rec"
0 9800000 sil -3021.529053 SENT-START
9800000 10100000 dh -142.646698 the
10100000 10400000 ax -214.386246
10400000 10400000 sp -1.203973
10400000 10900000 ih -421.761047 information
.
"*/group3.rec"
0 8900000 sil -2576.518555 SENT-START
8900000 9200000 dh -142.900620 the
9200000 9500000 ax -245.424423
9500000 9500000 sp -1.203973
9500000 9900000 ih -343.396576 information
如上边TXT文档内容有三组数据,我不想要这三组数据的两行标题,只想要从0到information中间的矩阵。请问编程才能跳过这两行标题不读,直接读取矩阵?
QQ44380251
每组数据都要计算,就是说读到第一个information后开始计算前边的数据,然后跳过两行在读取第二组数据并计算。计算内容就是矩阵的第二列减第一列 展开
展开全部
不知道你数据中有数值也有字符如何运算,不过下面的程序能把数字开头的行所有内容读到元胞数组中
clear;
fid=fopen('test.dat','r');
dat=cell(22,10);
recst=logical(0);
linnum=1;
while 1
if(feof(fid));break;end;
str=fgetl(fid);
ind=findstr(str,' ');
if(~isempty(ind))
recst=logical(1);
else
recst=logical(0);
if(linnum~=1)
% one group of data ends here, do your calculation
end
end
if(recst)
ind=[0,ind,length(str)+1];
for ii=1:length(ind)-1
dat{linnum,ii}=str2num(str(ind(ii)+1:ind(ii+1)-1));
if(isempty(dat{linnum,ii}));dat{linnum,ii}=str(ind(ii)+1:ind(ii+1)-1);end
end
linnum=linnum+1;
end
end
fclose(fid);
如果需要,也可以只取其中的数值。原理就是读出每一行中的空格,作为分隔符。
clear;
fid=fopen('test.dat','r');
dat=cell(22,10);
recst=logical(0);
linnum=1;
while 1
if(feof(fid));break;end;
str=fgetl(fid);
ind=findstr(str,' ');
if(~isempty(ind))
recst=logical(1);
else
recst=logical(0);
if(linnum~=1)
% one group of data ends here, do your calculation
end
end
if(recst)
ind=[0,ind,length(str)+1];
for ii=1:length(ind)-1
dat{linnum,ii}=str2num(str(ind(ii)+1:ind(ii+1)-1));
if(isempty(dat{linnum,ii}));dat{linnum,ii}=str(ind(ii)+1:ind(ii+1)-1);end
end
linnum=linnum+1;
end
end
fclose(fid);
如果需要,也可以只取其中的数值。原理就是读出每一行中的空格,作为分隔符。
展开全部
不知道你数据中有数值也有字符如何运算,不过下面的程序能把数字开头的行所有内容读到元胞数组中
clear;
fid=fopen('test.dat','r');
dat=cell(22,10);
recst=logical(0);
linnum=1;
while 1
if(feof(fid));break;end;
str=fgetl(fid);
ind=findstr(str,' ');
if(~isempty(ind))
recst=logical(1);
else
recst=logical(0);
if(linnum~=1)
% one group of data ends here, do your calculation
end
end
if(recst)
ind=[0,ind,length(str)+1];
for ii=1:length(ind)-1
dat{linnum,ii}=str2num(str(ind(ii)+1:ind(ii+1)-1));
if(isempty(dat{linnum,ii}));dat{linnum,ii}=str(ind(ii)+1:ind(ii+1)-1);end
end
linnum=linnum+1;
end
end
fclose(fid);
如果需要,也可以只取其中的数值。原理就是读出每一行中的空格,作为分隔符。
clear;
fid=fopen('test.dat','r');
dat=cell(22,10);
recst=logical(0);
linnum=1;
while 1
if(feof(fid));break;end;
str=fgetl(fid);
ind=findstr(str,' ');
if(~isempty(ind))
recst=logical(1);
else
recst=logical(0);
if(linnum~=1)
% one group of data ends here, do your calculation
end
end
if(recst)
ind=[0,ind,length(str)+1];
for ii=1:length(ind)-1
dat{linnum,ii}=str2num(str(ind(ii)+1:ind(ii+1)-1));
if(isempty(dat{linnum,ii}));dat{linnum,ii}=str(ind(ii)+1:ind(ii+1)-1);end
end
linnum=linnum+1;
end
end
fclose(fid);
如果需要,也可以只取其中的数值。原理就是读出每一行中的空格,作为分隔符。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询