根據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