讀文字檔及提取數值

來源:互聯網
上載者:User

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

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

--

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

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.