XXX_rd=textread('XXX.txt','%s','delimiter','/n');
是以文本的方式读取文件XXX.txt,得到的XXX_rd是一个n*1的元胞数组,每个元胞的内容为一个字符串,对应一行文本。
delimiter是分隔符,可以指定多个,如同时指定'/n'和','及空格为分隔符:
XXX_rd=textread('XXX.txt','%s','delimiter','/n, ');
注:为了清晰,通常接收变量的名称取作文件名加_rd,即如果文件名是XXX.txt,则接收变量名为XXX_rd,然后XXX_rd经一系列处理得到最终想要的变量XXX。
--
以上述方式读入文件的好处是信息毫无遗漏--先将文本毫发无损地读进来,然后再进行各种处理,并且处理也要在副本上进行,保证原稿的完整。
最常用的处理是提取数值:对于一行文本(字符串),顺序提取其中的数值存于一个向量中,可由下面自定义函数实现:
function valus=getvalu(str) valus=[]; valustr=[]; for i=1:length(str) if (str(i)>='0'&&str(i)<='9')||str(i)=='.' valustr=[valustr,str(i)]; else if ~(isempty(valustr)||(length(valustr)==1&&valustr(1)=='.')) valus=[valus,str2num(valustr)]; valustr=[]; end end end if ~(isempty(valustr)||(length(valustr)==1&&valustr(1)=='.')) valus=[valus,str2num(valustr)]; end end |
如果想将各行提取的数值组成一个矩阵,只需写一个循环即可。
--
另外常用的处理就是用所读入的文本内容去填充一个结构体(其中也要用到提取数值),也是通过循环来做,并不难写。