下面這個函式是取filein中的第line行寫入fileout中的程式,如果想實現取特定幾行,只要稍微修改一下就可以。
function dataout=dataread(filein,fileout,line)
fidin=fopen(filein,'r');
fidout=fopen(fileout,'w');
nline=0;
while ~feof(fidin) % 判斷是否為檔案末尾
tline=fgetl(fidin); % 從檔案讀行
nline=nline+1; if nline==line
fprintf(fidout,'%s\n',tline);
dataout=tline;
end
end
fclose(fidin);
一、純資料檔案(沒有字母和中文,純數字)
對於這種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 % 如果是非數字繼續下一次迴圈
endend
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
from:
matlab txt 檔案操作
fid fopen result.txt a fprintf fid,d n variable fclose fid matlab 開啟檔案後,逐行讀取檔案 fid fopen result.txt r id 1 while 1 tline fgetl fid read the context of...
讀取PDF文件
coding utf 8 匯入開發包 frompdfminer.pdfparserimportpdfparser,pdfdocument frompdfminer.pdfinterpimportpdfresourcemanager,pdfpageinterpreter frompdfminer.pd...
c 讀取文件
設計乙個讀取 inputfile.txt 資料的class parsetxtfile 實體化時由 constructor 構造器 提供檔案所在路徑 讀取完成列印 txt 檔案內的 data,建議使用 system.io.file.readalllines 必須處理以下exception,提供相對應的...