Matlab檔案操作及讀txt檔案

2021-06-10 01:15:20 字數 3630 閱讀 6541

檔案操作是一種重要的輸入輸出方式,即從資料檔案讀取資料或將結果寫入資料檔案。matlab提供了一系列低層輸入輸出函式,專門用於檔案操作。

1、檔案的開啟與關閉

1)開啟檔案

在讀寫檔案之前,必須先用fopen函式開啟或建立檔案,並指定對該檔案進行的操作方式。fopen函式的呼叫格式為:

fid=fopen(檔名,『開啟方式』)

說明:其中fid用於儲存檔案控制代碼值,如果返回的控制代碼值大於0,則說明檔案開啟成功。檔名用字串形式,表示待開啟的資料檔案。常見的開啟方式如下:

 『r』:唯讀方式開啟檔案(預設的方式),該檔案必須已存在。

 『r+』:讀寫方式開啟檔案,開啟後先讀後寫。該檔案必須已存在。

 『w』:開啟後寫入資料。該檔案已存在則更新;不存在則建立。

 『w+』:讀寫方式開啟檔案。先讀後寫。該檔案已存在則更新;不存在則建立。

 『a』:在開啟的檔案末端新增資料。檔案不存在則建立。

 『a+』:開啟檔案後,先讀入資料再新增資料。檔案不存在則建立。

另外,在這些字串後新增乙個「t」,如『rt』或『wt+』,則將該檔案以文字方式開啟;如果新增的是「b」,則以二進位制格式開啟,這也是fopen函式預設的開啟方式。

2)關閉檔案

檔案在進行完讀、寫等操作後,應及時關閉,以免資料丟失。關閉檔案用fclose函式,呼叫格式為:

sta=fclose(fid)

說明:該函式關閉fid所表示的檔案。sta表示關閉檔案操作的返回**,若關閉成功,返回0,否則返回-1。如果要關閉所有已開啟的檔案用fclose(『all』)。

2、二進位制檔案的讀寫操作

1)寫二進位制檔案

fwrite函式按照指定的資料精度將矩陣中的元素寫入到檔案中。其呼叫格式為:

count=fwrite(fid,a,precision)

說明:其中count返回所寫的資料元素個數(可預設),fid為檔案控制代碼,a用來存放寫入檔案的資料,precision代表資料精度,常用的資料精度有:char、uchar、int、long、float、double等。預設資料精度為uchar,即無符號字元格式。

例6.8 將乙個二進位制矩陣存入磁碟檔案中。

>> a=[1 2 3 4 5 6 7 8 9];

>> fid=fopen('d:\test.bin','wb') %以二進位制資料寫入方式開啟檔案

fid =

3 %其值大於0,表示開啟成功

>> fwrite(fid,a,'double')

ans =

9 %表示寫入了9個資料

>> fclose(fid)

ans =

0 %表示關閉成功

2)讀二進位制檔案

fread函式可以讀取二進位制檔案的資料,並將資料存入矩陣。其呼叫格式為:

[a,count]=fread(fid,size,precision)

說明:其中a是用於存放讀取資料的矩陣、count是返回所讀取的資料元素個數、fid為檔案控制代碼、size為可選項,若不選用則讀取整個檔案內容;若選用則它的值可以是下列值:n(讀取n個元素到乙個列向量)、inf(讀取整個檔案)、[m,n](讀資料到m×n的矩陣中,資料按列存放)。 precision用於控制所寫資料的精度,其形式與fwrite函式相同。

3、文字檔案的讀寫操作

1)讀文字檔案

[a,count]=fscanf(fid,format,size)

說明:其中a用來存放讀取的資料,count返回所讀取的資料元素個數,fid為檔案控制代碼,format用來控制讀取的資料格式,由%加上格式符組成,常見的格式符有:d(整型)、f(浮點型)、s(字串型)、c(字元型)等,在%與格式符之間還可以插入附加格式說明符,如資料寬度說明等。size為可選項,決定矩陣a中資料的排列形式,它可以取下列值:n(讀取n個元素到乙個列向量)、inf(讀取整個檔案)、[m,n](讀資料到m×n的矩陣中,資料按列存放)。

2)寫文字檔案

fprintf(fid,format,a)

說明:fid為檔案控制代碼,指定要寫入資料的檔案,format是用來控制所寫資料格式的格式符,與fscanf函式相同,a是用來存放資料的矩陣。

例6.9 建立乙個字元矩陣並存入磁碟,再讀出賦值給另乙個矩陣。

>> a='string';

>> fid=fopen('d:\char1.txt','w');

>> fprintf(fid,'%s',a);

>> fclose(fid);

>> fid1=fopen('d:\char1.txt','rt');

>> fid1=fopen('d:\char1.txt','rt');

>> b=fscanf(fid1,'%s')

b =string

matlab讀txt檔案

fid=fopen('fx.txt','r');

%得到檔案號

[f,count]=fscanf(fid,'%f %f',[12,90]);

%把檔案號1的資料讀到f中。其中f是[12 90]的矩陣

%這裡'%f %f'表示讀取資料的形勢,他是按原始資料型讀出

fclose(fid);

%關閉檔案

另外有的txt檔案還可以用load來開啟

其語句為

f=load('fx.txt)

我個人覺得用第一種方式較好。因為有些時候,特別是fx.txt 的一行種有多個資料時用load

就比較麻煩了。

資料檔案定位

matlab提供了與檔案定位操作有關的函式fseek和ftell。fseek函式用於定位檔案位置指標,其呼叫格式為:

status=fseek(fid, offset, origin)

其中fid為檔案控制代碼,offset表示位置指標相對移動的位元組數,offset values are interpreted as follows:

> 0    move toward the end of the file.

= 0    do not change position.

< 0    move toward the beginning of the file.

origin表示位置指標移動的參照位置,origin values are interpreted as follows:

'bof' or -1   beginning of file

'cof' or 0   current position in file

'eof' or 1   end of file。若定位成功,status返回值為0,否則返回值為–1。

ftell函式返回檔案指標的當前位置,其呼叫格式為:

position=ftell (fid)

返回值為從檔案開始到指標當前位置的位元組數。若返回值為–1表示獲取檔案當前位置失敗。

例:fid=fopen('sw.m','r')

fseek(fid,10,-1)

ans =

>> ftell(fid)

ans =

>> fseek(fid,-10,1)

ans =

>> ftell(fid)

ans =

檔案指標可以移動到當前檔案末尾的後面,但不能移動到開頭的前面;當把指標移動到檔案末尾後面時,若關閉檔案則檔案大小會自動增長到檔案指標所指的大小,用這種方法可以很容易建立乙個很大的檔案,當然新增加的檔案內容是隨機的。

matlab檔案操作及讀txt檔案

matlab檔案操作 檔案操作是一種重要的輸入輸出方式,即從資料檔案讀取資料或將結果寫入資料檔案。matlab提供了一系列低層輸入輸出函式,專門用於檔案操作。1 檔案的開啟與關閉 1 開啟檔案 在讀寫檔案之前,必須先用fopen函式開啟或建立檔案,並指定對該檔案進行的操作方式。fopen函式的呼叫格...

matlab檔案操作及讀txt檔案

matlab檔案操作 檔案操作是一種重要的輸入輸出方式,即從資料檔案讀取資料或將結果寫入資料檔案。matlab提供了一系列低層輸入輸出函式,專門用於檔案操作。1 檔案的開啟與關閉 1 開啟檔案 在讀寫檔案之前,必須先用fopen函式開啟或建立檔案,並指定對該檔案進行的操作方式。fopen函式的呼叫格...

Matlab檔案操作及讀txt檔案

檔案操作是一種重要的輸入輸出方式,即從資料檔案讀取資料或將結果寫入資料檔案。matlab提供了一系列低層輸入輸出函式,專門用於檔案操作。1 檔案的開啟與關閉 1 開啟檔案 在讀寫檔案之前,必須先用fopen函式開啟或建立檔案,並指定對該檔案進行的操作方式。fopen函式的呼叫格式為 fid fope...