根據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
“你好
歡迎來到
振動論壇
vib.hit.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 =
\'你好\'
\'歡迎來到\'
\'振動論壇\'
\'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\'
因以字元串的形式讀入,是以有\'\'。
————————————————————————————————
三、中文 資料 英文 混亂如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
