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