matlab 数据处理程序 有文字行,数字行,空行,
试验数据 有文字行,数字行,空行,想提取数据并绘图现有如下程序,可是只读到空行便退出了,请问大家这种情况怎么处理。程序应该怎么修改。
fidin=fopen('shuju.txt'); % 打开shuju.txt文件
fidout=fopen('chulihou.txt','w'); % 创建chulihou.txt文件
while ~feof(fidin) % 判断是否为文件末尾
tline=fgetl(fidin); % 从文件读行
if double(tline(1))>=48&&double(tline(1))<=57 % 判断首字符是否是数值
fprintf(fidout,'%s\n',tline); % 如果是数字行,把此行数据写入文件chulihou.txt
continue % 如果是非数字继续下一次循环
end
end
fclose(fidout);
data=textread(fidout);
数据如下:
Temperature -13 deg_C
Operator Information End
Data Acquisition Preload Data Time: 42.833984 Sec 11/8/2010 1:51:33 PM
Time Axial Displacement Axial Force Confining Displacement Confining Pressure
Sec mm kN mm MPa
12.234619 25.866014 -0.28899339 130.95151 0.032512732
40.234619 0.0014054775 -0.97908342 135.41354 0.28755701
40.734619 0.0022423267 -0.97924072 135.44521 0.29236361
41.234619 0.0018614531 -0.99580288 135.47627 0.29657686
41.734619 0.0026661158 -1.0136685 135.51547 0.30159634
42.234619 0.002438128 -1.0365298 135.54652 0.30553156
42.734619 0.0015449524 -1.0270188 135.57671 0.30974835
Data Acquisition Hold Data Time: 1842.8442 Sec 11/8/2010 2:21:34 PM
Time Axial Displacement Axial Force Confining Displacement Confining Pressure
Sec mm kN mm MPa
43.842773 0.0012686849 -1.0467416 135.63153 0.3153342
44.842773 0.00112921 -1.0617769 135.6525 0.31523082
45.842773 0.00036478043 -1.0623968 135.65942 0.31372055
46.842773 0.00070810318 -1.0411634 135.66548 0.31334537
47.842773 0.00083953142 -1.075087 135.66881 0.31109512
48.842773 0.00083953142 -1.0482372 135.66808 0.31025884
87.842773 0.00054717064 -1.0151838 135.71162 0.30354327
Data Acquisition Hold Data Time: 1842.8442 Sec 11/8/2010 2:21:34 PM
Time Axial Displacement Axial Force Confining Displacement Confining Pressure
Sec mm kN mm MPa
43.842773 0.0012686849 -1.0467416 135.63153 0.3153342
44.842773 0.00112921 -1.0617769 135.6525 0.31523082
45.842773 0.00036478043 -1.0623968 135.65942 0.31372055
46.842773 0.00070810318 -1.0411634 135.66548 0.31334537
47.842773 0.00083953142 -1.075087 135.66881 0.31109512
48.842773 0.00083953142 -1.0482372 135.66808 0.31025884
87.842773 0.00054717064 -1.0151838 135.71162 0.30354327
Data Acquisition Hold Data Time: 1842.8442 Sec 11/8/2010 2:21:34 PM
Time Axial Displacement Axial Force Confining Displacement Confining Pressure
Sec mm kN mm MPa
43.842773 0.0012686849 -1.0467416 135.63153 0.3153342
44.842773 0.00112921 -1.0617769 135.6525 0.31523082
45.842773 0.00036478043 -1.0623968 135.65942 0.31372055
46.842773 0.00070810318 -1.0411634 135.66548 0.31334537
47.842773 0.00083953142 -1.075087 135.66881 0.31109512
48.842773 0.00083953142 -1.0482372 135.66808 0.31025884
87.842773 0.00054717064 -1.0151838 135.71162 0.30354327 fidin=fopen('shuju.txt'); % 打开shuju.txt文件
fidout=fopen('chulihou.txt','w'); % 创建chulihou.txt文件
while ~feof(fidin) % 判断是否为文件末尾
tline=fgetl(fidin);% 从文件读行
if length(tline)>0&&tline(1)>='0'&&tline(1)<='9' % 判断首字符是否是数值
fprintf(fidout,'%s\r\n',tline); % 如果是数字行,把此行数据写入文件chulihou.txt
continue % 如果是非数字继续下一次循环
end
end
fclose(fidout);
空行时候tline长度为0 读不到tline(1) 太感谢了:victory: 如上,处理的好数据想用其中第二三列分别作x、y轴绘图,下面的程序问题在哪儿,请教。谢谢。
fidin=fopen('shuju.txt','r'); % 打开shuju.txt文件
fidout=fopen('chulihou.txt','w'); % 创建chulihou.txt文件
while ~feof(fidin) % 判断是否为文件末尾
tline=fgetl(fidin);% 从文件读行
if length(tline)>0&&tline(1)>='0'&&tline(1)<='9' % 判断首字符是否是数值
fprintf(fidout,'%s\r\n',tline); % 如果是数字行,把此行数据写入文件chulihou.txt
continue % 如果是非数字继续下一次循环
end
end
whos;
a=fopen('chulihou.txt');
x=a(:,);
y=a(:,);
plot(x,y) 大哥啊,a只是文件句柄,并不是数据,如果相对数组操作可以用load
a = load chulihou.txt ;%建议将文件名改成ChuLiHou或chu_li_hou这样不是更好吗?当然建议使用英文名
x = a(: ,2) ;
y = a(: ,3) ;
plot(x, y) ; 谢谢指点,可是提示出错不知道是什么原因,不能运行。
再帮忙看看,万分感谢!
fidin=fopen('shuju.txt','r'); % 打开shuju.txt文件
fidout=fopen('chulihou.txt','w'); % 创建chulihou.txt文件
while ~feof(fidin) % 判断是否为文件末尾
tline=fgetl(fidin);% 从文件读行
if length(tline)>0&&tline(1)>='0'&&tline(1)<='9' % 判断首字符是否是数值
fprintf(fidout,'%s\r\n',tline); % 如果是数字行,把此行数据写入文件chulihou.txt
continue % 如果是非数字继续下一次循环
end
end
whos;
a = load chulihou.txt
x = a(: ,2) ;
y = a(: ,3) ;
plot(x, y) ; 解决了,谢谢大家!
a = load ('chulihou.txt');
页:
[1]