读文本文件及提取数值

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

如果想将各行提取的数值组成一个矩阵,只需写一个循环即可。

--

另外常用的处理就是用所读入的文本内容去填充一个结构体(其中也要用到提取数值),也是通过循环来做,并不难写。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章