matlab txt文件讀取

2022-08-31 10:18:09 字數 3513 閱讀 3217

下面這個函式是取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,提供相對應的...