matlab中讀取txt數據文件(轉)

根據txt文檔不一樣種類介紹不一樣的讀取數據方法element

1、純數據文件(沒有字母和中文,純數字)文檔

對於這種txt文檔,從matalb中讀取就簡單多了字符串

例如test.txt文件,內容爲「17.901 -1.1111 33.045
                                          17.891 -1.1286 33.045
                                          17.884 -1.1345 33.045」get

能夠在command window中輸入load test.txt ,而後就會產生一個test的數據文件,內容跟test.txt中的數據同樣;另外一種方法是在file/import data....../next/finish 也可產生一個叫test的數據文件。it

2、中英文和數據如test1.txttest


「你好
歡迎來到
振動論壇
vib.hit.edu.cn
1 11 111 1111
2 22 222 2222
3 33 333 3333
4 44 444 4444
5 55 555 5555」
這樣的文件怎麼讀入數據呢?
方法有多種,現舉兩個比較簡單實用的。import


方法一:
file/import data....../next/finish 
>> whos
Name           Size                   Bytes Class變量

data           5x4                      160 double array
textdata       4x1                      300 cell arrayfile

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'
因以字符串的形式讀入,因此有''。
————————————————————————————————

3、中文 數據 英文 混亂如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

相關文章
相關標籤/搜索