在Matalb中如何讀取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