天天看點

matlab中讀取txt資料檔案(轉)

根據txt文檔不同種類介紹不同的讀取資料方法

一、純資料檔案(沒有字母和中文,純數字)

對于這種txt文檔,從matalb中讀取就簡單多了

例如test.txt檔案,内容為“17.901 -1.1111 33.045

                                          17.891 -1.1286 33.045

                                          17.884 -1.1345 33.045”

可以在command window中輸入load test.txt ,然後就會産生一個test的資料檔案,内容跟test.txt中的資料一樣;另一種方法是在file/import data....../next/finish 也可産生一個叫test的資料檔案。

二、中英文和資料如test1.txt

“你好

歡迎來到

振動論壇

vib.hit.edu.cn

1 11 111 1111

2 22 222 2222

3 33 333 3333

4 44 444 4444

5 55 555 5555”

這樣的檔案怎麼讀入資料呢?

方法有多種,現舉兩個比較簡單實用的。

方法一:

file/import data....../next/finish 

>> whos

Name           Size                   Bytes Class

data           5x4                      160 double array

textdata       4x1                      300 cell array

Grand total is 54 elements using 460 bytes

>> data

data =

           1          11         111        1111

           2          22         222        2222

           3          33         333        3333

           4          44         444        4444

           5          55         555        5555

>> textdata

textdata =

    \'你好\'

    \'歡迎來到\'

    \'振動論壇\'

    \'vib.hit.edu.cn\'

方法二:

[a1,a2,a3,a4]=textread(\'test1.txt\',\'%s%s%s%s\',\'headerlines\',4)

說明:%s可以是其他形式,跟讀入的資料類型有關,比如這裡也可以用%n,%f等。

這裡%s的個數和[a1,a2,a3,a4]對應。

>> [a1,a2,a3,a4]=textread(\'test1.txt\',\'%s%s%s%s\',\'headerlines\',4)

a1 =

    \'1\'

    \'2\'

    \'3\'

    \'4\'

    \'5\'

a2 =

    \'11\'

    \'22\'

    \'33\'

    \'44\'

    \'55\'

a3 =

    \'111\'

    \'222\'

    \'333\'

    \'444\'

    \'555\'

a4 =

    \'1111\'

    \'2222\'

    \'3333\'

    \'4444\'

    \'5555\'

因以字元串的形式讀入,是以有\'\'。

————————————————————————————————

三、中文 資料 英文 混亂如test.txt

你好

1 11 111 1111

歡迎來到

2 22 222 2222

振動論壇

3 33 333 3333

vib.hit.edu.cn

4 44 444 4444

5 55 555 5555

說明:這種内容格式的檔案用上面的方法是不行的。

以下是由chinamaker編寫的一種方法:

fidin=fopen(\'test.txt\');                               % 打開test2.txt檔案             

fidout=fopen(\'mkmatlab.txt\',\'w\');                       % 建立MKMATLAB.txt檔案

while ~feof(fidin)                                      % 判斷是否為檔案末尾               

    tline=fgetl(fidin);                                 % 從檔案讀行   

    if double(tline(1))>=48&&double(tline(1))<=57       % 判斷首字元是否是數值

       fprintf(fidout,\'%s\n\n\',tline);                  % 如果是數字行,把此行資料寫入檔案MKMATLAB.txt

       continue                                         % 如果是非數字繼續下一次循環

    end

end

fclose(fidout);

MK=importdata(\'MKMATLAB.txt\');      % 将生成的MKMATLAB.txt檔案導入工作空間,變量名為MK,實際上它不顯示出來 

>> MK

MK =

           1          11         111        1111

           2          22         222        2222

           3          33         333        3333

           4          44         444        4444

           5          55         555        5555

matlab中讀取txt資料檔案(轉)