matlab中读取txt数据文件(txt文本文档)
生活随笔
收集整理的這篇文章主要介紹了
matlab中读取txt数据文件(txt文本文档)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
根據(jù)txt文檔不同種類介紹不同的讀取數(shù)據(jù)方法
一、純數(shù)據(jù)文件(沒(méi)有字母和中文,純數(shù)字)
對(duì)于這種txt文檔,從matalb中讀取就簡(jiǎn)單多了
例如test.txt文件,內(nèi)容為
17.901 -1.1111 33.045?
17.891 -1.1286 33.045?
17.884 -1.1345 33.045
可以在command window中輸入load test.txt ,然后就會(huì)產(chǎn)生一個(gè)test的數(shù)據(jù)文件,內(nèi)容跟test.txt中的數(shù)據(jù)一樣;另一種方法是在file/import data....../next/finish 也可產(chǎn)生一個(gè)叫test的數(shù)據(jù)文件。
二、中英文和數(shù)據(jù)如test1.txt
你好?
歡迎來(lái)到?
論壇?
edu.cn?
1 11 111 1111?
2 22 222 2222?
3 33 333 3333?
4 44 444 4444?
5 55 555 5555
這樣的文件怎么讀入數(shù)據(jù)呢??
方法有多種,現(xiàn)舉兩個(gè)比較簡(jiǎn)單實(shí)用的。
方法一:?
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 =?
? ? '你好'?
? ? '歡迎來(lái)到'?
? ? '論壇'?
? ? 'edu.cn'
方法二:?
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)?
說(shuō)明:%s可以是其他形式,跟讀入的數(shù)據(jù)類型有關(guān),比如這里也可以用%n,%f等。?
這里%s的個(gè)數(shù)和[a1,a2,a3,a4]對(duì)應(yīng)。?
>> [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'?
因以字符串的形式讀入,所以有''。?
————————————————————————————————
三、中文 數(shù)據(jù) 英文 混亂如test.txt
你好?
1 11 111 1111?
歡迎來(lái)到?
2 22 222 2222?
論壇?
3 33 333 3333?
edu.cn?
4 44 444 4444?
5 55 555 5555
說(shuō)明:這種內(nèi)容格式的文件用上面的方法是不行的。
以下是由chinamaker編寫(xiě)的一種方法:
fidin=fopen('test.txt'); % 打開(kāi)test2.txt文件 fidout=fopen('mkmatlab.txt','w'); % 創(chuàng)建MKMATLAB.txt文件 while ~feof(fidin) % 判斷是否為文件末尾 tline=fgetl(fidin); % 從文件讀行 if double(tline(1))>=48&&double(tline(1))<=57 % 判斷首字符是否是數(shù)值 fprintf(fidout,'%s\n\n',tline); % 如果是數(shù)字行,把此行數(shù)據(jù)寫(xiě)入文件MKMATLAB.txt continue % 如果是非數(shù)字繼續(xù)下一次循環(huán) end end fclose(fidout); MK=importdata('MKMATLAB.txt'); % 將生成的MKMATLAB.txt文件導(dǎo)入工作空間,變量名為MK,實(shí)際上它不顯示出來(lái)
>> MK
MK =
? ? ? ? ? ?1 ? ? ? ? ?11 ? ? ? ? 111 ? ? ? ?1111?
? ? ? ? ? ?2 ? ? ? ? ?22 ? ? ? ? 222 ? ? ? ?2222?
? ? ? ? ? ?3 ? ? ? ? ?33 ? ? ? ? 333 ? ? ? ?3333?
? ? ? ? ? ?4 ? ? ? ? ?44 ? ? ? ? 444 ? ? ? ?4444?
? ? ? ? ? ?5 ? ? ? ? ?55 ? ? ? ? 555 ? ? ? ?5555
---------------------------------------------------------------
我的txt數(shù)據(jù)里既有數(shù)字又有字符串,形式為:
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列數(shù),
怎樣導(dǎo)入matlab啊?
?
假設(shè)數(shù)據(jù)在data.txt里,且位于當(dāng)面matlab路徑里,用下面這句就可以了 ?帶 *號(hào)的 ?把該行的數(shù)據(jù)屏蔽
[col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1);
一、純數(shù)據(jù)文件(沒(méi)有字母和中文,純數(shù)字)
對(duì)于這種txt文檔,從matalb中讀取就簡(jiǎn)單多了
例如test.txt文件,內(nèi)容為
17.901 -1.1111 33.045?
17.891 -1.1286 33.045?
17.884 -1.1345 33.045
可以在command window中輸入load test.txt ,然后就會(huì)產(chǎn)生一個(gè)test的數(shù)據(jù)文件,內(nèi)容跟test.txt中的數(shù)據(jù)一樣;另一種方法是在file/import data....../next/finish 也可產(chǎn)生一個(gè)叫test的數(shù)據(jù)文件。
二、中英文和數(shù)據(jù)如test1.txt
你好?
歡迎來(lái)到?
論壇?
edu.cn?
1 11 111 1111?
2 22 222 2222?
3 33 333 3333?
4 44 444 4444?
5 55 555 5555
這樣的文件怎么讀入數(shù)據(jù)呢??
方法有多種,現(xiàn)舉兩個(gè)比較簡(jiǎn)單實(shí)用的。
方法一:?
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 =?
? ? '你好'?
? ? '歡迎來(lái)到'?
? ? '論壇'?
? ? 'edu.cn'
方法二:?
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)?
說(shuō)明:%s可以是其他形式,跟讀入的數(shù)據(jù)類型有關(guān),比如這里也可以用%n,%f等。?
這里%s的個(gè)數(shù)和[a1,a2,a3,a4]對(duì)應(yīng)。?
>> [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'?
因以字符串的形式讀入,所以有''。?
————————————————————————————————
三、中文 數(shù)據(jù) 英文 混亂如test.txt
你好?
1 11 111 1111?
歡迎來(lái)到?
2 22 222 2222?
論壇?
3 33 333 3333?
edu.cn?
4 44 444 4444?
5 55 555 5555
說(shuō)明:這種內(nèi)容格式的文件用上面的方法是不行的。
以下是由chinamaker編寫(xiě)的一種方法:
fidin=fopen('test.txt'); % 打開(kāi)test2.txt文件 fidout=fopen('mkmatlab.txt','w'); % 創(chuàng)建MKMATLAB.txt文件 while ~feof(fidin) % 判斷是否為文件末尾 tline=fgetl(fidin); % 從文件讀行 if double(tline(1))>=48&&double(tline(1))<=57 % 判斷首字符是否是數(shù)值 fprintf(fidout,'%s\n\n',tline); % 如果是數(shù)字行,把此行數(shù)據(jù)寫(xiě)入文件MKMATLAB.txt continue % 如果是非數(shù)字繼續(xù)下一次循環(huán) end end fclose(fidout); MK=importdata('MKMATLAB.txt'); % 將生成的MKMATLAB.txt文件導(dǎo)入工作空間,變量名為MK,實(shí)際上它不顯示出來(lái)
>> MK
MK =
? ? ? ? ? ?1 ? ? ? ? ?11 ? ? ? ? 111 ? ? ? ?1111?
? ? ? ? ? ?2 ? ? ? ? ?22 ? ? ? ? 222 ? ? ? ?2222?
? ? ? ? ? ?3 ? ? ? ? ?33 ? ? ? ? 333 ? ? ? ?3333?
? ? ? ? ? ?4 ? ? ? ? ?44 ? ? ? ? 444 ? ? ? ?4444?
? ? ? ? ? ?5 ? ? ? ? ?55 ? ? ? ? 555 ? ? ? ?5555
---------------------------------------------------------------
我的txt數(shù)據(jù)里既有數(shù)字又有字符串,形式為:
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列數(shù),
怎樣導(dǎo)入matlab啊?
?
假設(shè)數(shù)據(jù)在data.txt里,且位于當(dāng)面matlab路徑里,用下面這句就可以了 ?帶 *號(hào)的 ?把該行的數(shù)據(jù)屏蔽
[col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1);
總結(jié)
以上是生活随笔為你收集整理的matlab中读取txt数据文件(txt文本文档)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: matlab 读取txt文件数据
- 下一篇: matlab中textread 函数