讀文本文件及提取數值

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

如果想將各行提取的數值組成一個矩陣,只需寫一個循環即可。

--

另外常用的處理就是用所讀入的文本內容去填充一個結構體(其中也要用到提取數值),也是通過循環來做,並不難寫。

 

 

 

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