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)