『壹』 matlab如何讀取其中的一部分文件
一、純數據文件(沒有字母和中文,純數字耐祥)x0dx0a對於這種txt文檔,從matalb中讀取就簡單多了x0dx0a例如test.txt文件,內容為x0dx0a17.901 -1.1111 33.045 x0dx0a17.891 -1.1286 33.045 x0dx0a17.884 -1.1345 33.045x0dx0a可咐畝轎以在command window中輸入load test.txt ,然後就會產生一個test的數據文件,內容跟test.txt中的數據一樣衡肆;另一種方法是在file/import data....../next/finish 也可產生一個叫test的數據文件。x0dx0a二、中英文和數據如test1.txtx0dx0a你好 x0dx0a歡迎來到 x0dx0a論壇 x0dx0ae.cn x0dx0a1 11 111 1111 x0dx0a2 22 222 2222 x0dx0a3 33 333 3333 x0dx0a4 44 444 4444 x0dx0a5 55 555 5555x0dx0ax0dx0a這樣的文件怎麼讀入數據呢? x0dx0a方法有多種,現舉兩個比較簡單實用的。x0dx0a方法一: x0dx0afile/import data....../next/finish x0dx0a>> whos x0dx0aName Size Bytes Classx0dx0adata 5x4 160 double array x0dx0atextdata 4x1 300 cell arrayx0dx0aGrand total is 54 elements using 460 bytesx0dx0a>> datax0dx0adata =x0dx0a 1 11 111 1111 x0dx0a 2 22 222 2222 x0dx0a 3 33 333 3333 x0dx0a 4 44 444 4444 x0dx0a 5 55 555 5555x0dx0a>> textdatax0dx0atextdata =x0dx0a '你好x0dx0a '歡迎來到x0dx0a '論壇x0dx0a 'e.cn'x0dx0a方法二: x0dx0a[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4) x0dx0a說明:%s可以是其他形式,跟讀入的數據類型有關,比如這里也可以用%n,%f等。 x0dx0a這里%s的個數和[a1,a2,a3,a4]對應。 x0dx0a>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)x0dx0aa1 =x0dx0a Ƈx0dx0a ƈx0dx0a Ɖx0dx0a Ɗx0dx0a Ƌ'x0dx0aa2 =x0dx0a ཇx0dx0a དྷx0dx0a ཝx0dx0a ཨx0dx0a ཱི'x0dx0aa3 =x0dx0a 飇x0dx0a 餶x0dx0a 馥x0dx0a 騔x0dx0a 骃'x0dx0aa4 =x0dx0a x0dx0a x0dx0a x0dx0a x0dx0a x0dx0a因以字元串的形式讀入,所以有''。 x0dx0a————————————————————————————————x0dx0a三、中文 數據 英文 混亂如test.txtx0dx0a你好 x0dx0a1 11 111 1111 x0dx0a歡迎來到 x0dx0a2 22 222 2222 x0dx0a論壇 x0dx0a3 33 333 3333 x0dx0ae.cn x0dx0a4 44 444 4444 x0dx0a5 55 555 5555x0dx0a說明:這種內容格式的文件用上面的方法是不行的。x0dx0a以下是由chinamaker編寫的一種方法:x0dx0afidin=fopen('test.txt'); % 打開test2.txt文件 x0dx0afidout=fopen('mkmatlab.txt','w'); % 創建MKMATLAB.txt文件 x0dx0awhile ~feof(fidin) % 判斷是否為文件末尾 x0dx0a tline=fgetl(fidin); % 從文件讀行 x0dx0a if double(tline(1))>=48&&double(tline(1))<=57 % 判斷首字元是否是數值 x0dx0a fprintf(fidout,'%s\n\n',tline); % 如果是數字行,把此行數據寫入文件MKMATLAB.txt x0dx0a continue % 如果是非數字繼續下一次循環 x0dx0a end x0dx0aend x0dx0afclose(fidout); x0dx0aMK=importdata('MKMATLAB.txt'); % 將生成的MKMATLAB.txt文件導入工作空間,變數名為MK,實際上它不顯示出來 x0dx0a>> MKx0dx0aMK =x0dx0a 1 11 111 1111 x0dx0a 2 22 222 2222 x0dx0a 3 33 333 3333 x0dx0a 4 44 444 4444 x0dx0a 5 55 555 5555x0dx0a---------------------------------------------------------------x0dx0a我的txt數據里既有數字又有字元串,形式為:x0dx0a0.129515 DDAA 01 2.24609 94.50000 98x0dx0a0.130434 DDAA 01 2.24609 96.30000 9Ax0dx0a0.131441 DDAA 01 2.24609 97.20000 9Bx0dx0a0.132448 DDAA 01 2.24609 99.00000 9Dx0dx0a0.133507 DDAA 01 2.24609 100.80000 9Fx0dx0a0.134515 DDAA 01 2.24609 101.70000 A0x0dx0a............x0dx0a我只想要第一列,第四列,第五列。x0dx0a也就是0.129515 2.24609 94.50000 這3列數,x0dx0a怎樣導入matlab啊?x0dx0ax0dx0a假設數據在data.txt里,且位於當面matlab路徑里,用下面這句就可以了x0dx0a[col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1);