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 |
如果想將各行提取的數值組成一個矩陣,只需寫一個循環即可。
--
另外常用的處理就是用所讀入的文本內容去填充一個結構體(其中也要用到提取數值),也是通過循環來做,並不難寫。