请教如何用matlab去读取内容不规则的文本文件的数据

来源:百度知道 编辑:UC知道 时间:2024/06/21 02:36:36
源文件的某个段落如下

%_N_ARTISTEST_MPF
;$PATH=/_N_WKS_DIR/_N__WPD
;PART_NUMBER=
;PART_NAME=
;PROGRAMMED_BY=
;ISSUE_NUMBER=
N2 M27
N4 G40 G00
N6 CUT3DC
MSG(" OPERATION NAME : SET G54 ")
N8 $P_UIFR[1]=CTRANS()
N10 $P_UIFR[1,X,TR]=0
N12 $P_UIFR[1,Y,TR]=0
N14 $P_UIFR[1,Z,TR]=82.5
…………
N62 G01 G54 G90 G94 X25.215 Y53.55 Z1.819 A0. B0. F10800. D1 M07
N64 X76.02 Y169.418 Z-9.25
N66 X68.932 Y172.361
N68 Y162.329
N70 X76.02 Y169.418
N72 X80.263 Y165.175
N74 X84.506 Y160.933
N76 X96.362 Y172.788
N78 X86.848 Y177.66
N80 X77.086 Y182.015
N82 X67.104 Y185.838
N84 X56.932 Y189.121
N86 Y133.359

我需要做的事情是 找出程序中所有的xyz后面的数值(即点的xyz的坐标值),并保存到另外一个文本文件之中,非坐标值外的所有数值和字符都可以忽略。程序中xyz后面的值都为相对坐标值,所以当程序中某行x,y或者z值缺省时,即没有相对坐标移动,其值为0.
本人是matlab初学者,会的东西相当有限,正在一步步地学,谢谢各位的帮助。不好意思 如果可以,请麻烦强人最好能把代码写下来告诉我,因为只是简单的告诉我用什么语句的话我暂时还不能自己解决问题。谢谢。
你好 谢谢你的答案 具体能不能使用我还没有

%%方法比较笨
fid=fopen('d:\data.txt','r');
NumLine=0;
datax=[];
datay=[];
dataz=[];
while(~feof(fid))
lineinfo=fgetl(fid);%读一行数据
NumLine=NumLine+1;
if (NumLine<=14) %去掉文件头,因为文件头中含有XYZ会对下面编程造成很大干扰,你这个要修改文件头的行数
continue;
end
if (isempty(lineinfo))
continue; %空行,重新读下一行
end

flag=0;

xlocal=findstr(lineinfo,'X'); %假定一行最多只能有一个关键字符X,另外这里是区分大小写的
if (~isempty(xlocal))
xx=sscanf(lineinfo(xlocal:end),'X%f');
flag=1;
else
xx=0;
end

ylocal=findstr(lineinfo,'Y'); %假定一行最多只能有一个关键字符X,另外这里是区分大小写的
if (~isempty(ylocal))
yy=sscanf(lineinfo(ylocal:end),'Y%f');
flag=1;
else
yy=0;
end

zlocal=findstr(lineinfo,'Z'); %假定一行最多只能有一个关键字符X,另外这里是区分大小写的
if (~isempty(zlocal))
zz=sscanf(lineinfo(zlocal:end),'Z%f');
flag=1;