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后开始计算前边的数据,然后跳过两行在读取第二组数据并计算。计算内容就是矩阵的第二列减第一列
展开
 我来答
小弟238
2010-09-03 · TA获得超过169个赞
知道答主
回答量:44
采纳率:0%
帮助的人:62.6万
展开全部
不知道你数据中有数值也有字符如何运算,不过下面的程序能把数字开头的行所有内容读到元胞数组中

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);

如果需要,也可以只取其中的数值。原理就是读出每一行中的空格,作为分隔符。
Q小齐666
2015-11-05 · TA获得超过947个赞
知道小有建树答主
回答量:116
采纳率:50%
帮助的人:47.6万
展开全部
不知道你数据中有数值也有字符如何运算,不过下面的程序能把数字开头的行所有内容读到元胞数组中

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);

如果需要,也可以只取其中的数值。原理就是读出每一行中的空格,作为分隔符。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式