Matlab 文件操作 [轉]


1、  Matlab文件操作主要有三個步驟:首先打開文件,然后對文件進行讀寫操作,最后要關閉文件。

2、  fid=fopen(文件名,打開方式)

'r'

只讀,文件必須存在(缺省的打開方式)

'w'

寫文件,若文件已存在則原內容將被覆蓋;若文件不存在則新建一個

'a'

在文件末尾添加,文件若不存在則新建一個

'r+'

可讀可寫,文件必須存在

'w+'

可讀可寫,若文件已存在則原內容將被覆蓋;若文件不存在則新建一個

'a+'

可讀可寫可添加,文件若不存在則新建一個

3、  fid 為文件句柄,其它函數可以用它對該文件進行操作。如果句柄值大於 0,則表示文件打開成功;若打開失敗,fid 的返回值為 -1。

fid=fopen('output.txt','wt+');

fprintf(fid,'Hello world!\n');

fclose(fid);

4、  有兩個標准代碼文件,不需打開就可以直接使用,分別為:fid=1 標准輸出文件,fid=2 標准錯誤文件。

fprintf(1,'Hello world!\n');

fprintf(2,'Hello world!\n');

5、  若不指定打開方式,則表示只讀。

6、  文件有兩種格式:二進制文件(b)和文本文件(t)。

6、在Windows下,打開文件的默認是二進制格式,如果要以文本方式打開,則必須在打方式中加上字符 't'。

fid=fopen('output.txt','wt+');

7、  其中 fid 為所要關閉的文件的句柄,status 為關閉文件的返回代碼,若關閉成功則為 0,否則為 -1。

status=fclose(fid);

8、  文本文件的讀取

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

A 用來存放讀取的數據

count 返回讀取數據的個數,為可選項

fid 為文件句柄

size 為可選項,缺省為讀取整個文件,

若給出,則取值可以是:

N

讀取 N 個數據到一個列向量

Inf

讀取整個文件

[m,n]

讀取 m ´ n 個數據到一個  m ´ n 矩陣中,按列存放

 

 

 

 

 

format 用來控制讀取的數據格式,由 % 加上格式符組成,下表中是常見的格式符,在 % 之后可以加上數據寬度,如 %12d

c

字符型

g

浮點數(自動)

d

十進制整數

o

八進制

e

浮點數(科學計數法)

s

字符串

f

浮點數(小數形式)

x

十六進制

 

 

 

 

 

 

 

 

9、文本文件的寫入

count=fprintf(fid,format,輸出變量列表)

  • 將輸出變量按指定的格式寫入文件中
  • 若省略 fid,則表示在屏幕上輸出
  • count 返回所寫入的數據元素個數(可省)
  • format 以 % 開頭,通常由以下幾個部分組成:

 

l  fprintf 命令的格式說明符

c

字符型

g

浮點數(自動)

d

十進制整數

o

八進制

e

浮點數(科學計數法)

s

字符串

f

浮點數(小數形式)

x/X

十六進制

l  format 中還可以使用的特殊字符

\b

退后一格

\t

水平制表符

\f

換頁

\\

反斜杠

\n

換行

''

單引號

\r

回車

%%

百分號

10、讀寫的定位

  • 打開文件讀寫數據時,需要判斷和控制文件的讀寫位置,如數據是否讀完,或者需要讀寫指定位置上的數據等。
  • 在讀寫文件時,Matlab 自動創建一個文件位置指針來管理和維護文件讀寫數據的起始位置。
  • Matlab 提供了幾個文件位置指針定位操作函數:fseek、ftell 、 frewind 和 feof

Fseek:

status=fseek(fid,offset,origin)

fid 為文件句柄

offset 表示位置指針相對偏移的字節數,若為正表示向文件尾方偏移,若為負表示向文件頭方向偏移

origin 表示位置指針移動的參照位置,有三種取值:

'cof' 表示當前位置,

 'bof' 表示文件的開始位置,

 'eof' 表示文件末尾;

若定位成功,status 返回值為 0,否則返回 -1

    ftell、frewind 和 feof:

返回值為從文件開始到指針當前位置的字節數:position=ftell(fid)

將位置指針返回到文件的起始位置:frewind(fid)

判斷文件位置指針是否達到文件結束位置,若文件位置指針已在文件末尾,則返回 1,否則返回 0:eofstat=ftell(fid)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM