matlab中讀取txt數據文件(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

你好
歡迎來到
論壇
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 =

    '你好'
    '歡迎來到'
    '論壇'
    '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
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

---------------------------------------------------------------

我的txt數據里既有數字又有字符串,形式為:
0.129515 DDAA  01  2.24609 94.50000  98
0.130434 DDAA  01  2.24609 96.30000  9A
0.131441 DDAA  01  2.24609 97.20000  9B
0.132448 DDAA  01  2.24609 99.00000  9D
0.133507 DDAA  01  2.24609 100.80000  9F
0.134515 DDAA  01  2.24609 101.70000  A0
............
我只想要第一列,第四列,第五列。
也就是0.129515    2.24609    94.50000 這3列數,
怎樣導入matlab啊?

 

假設數據在data.txt里,且位於當面matlab路徑里,用下面這句就可以了
[col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1);
---------------------------------------------------------------

http://hi.baidu.com/youngbrave/blog/item/878db31fcd4f220f304e15bb.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM