http://tw.myblog.yahoo.com/jw!laMc_3KQEk.bNqgMewVZeSI-/article?mid=34
http://www.ymlib.net/article/sort010/info-341.html
檔案的存取及處理
本分享主要是給新使用者容易上手
因此寫的有點簡單
希望大家見諒
fopen開啟檔案
[fid,message]=fopen(‘檔案名稱’,’參數’)
fid 為檔案識別碼,當使用fopen 開啟檔案成功時,就會送回正整數的fid碼,如3,反之若開啟失敗時則fid會送回 –1的值給,message為開啟檔案若錯誤時則傳回錯誤訊息
參數(Permission):
‘r’ 只能讀,若檔案不存在時會發生錯誤
‘r+’ 能讀能寫,若檔案不存在時會發生錯誤
‘w’ 只能寫,若檔案不存在時會建立一新的檔案,若檔案存在則會將內容覆蓋過 去
‘w+’ 能 讀能寫,若檔案不存在時會建立一新的檔案,若檔案存在則會將內容覆蓋過去
‘a’ 只能附加(append)使用讀的方式,若檔案不存在時會建立一新的檔案,若檔案存在則會將內 容加於檔案後方
‘a+’ 只能附加(append)使用讀或寫的方式,若檔案不存在時會建立一新的檔案,若檔案存在則會 將內容加於檔案後方
fclose關閉檔案
status=fclose(fid)
fclose(‘all’)
當執行fclose 成功就會送回一個0值給status。
檔案存取fscanf,fprintf,fread,fwrite
若檔案內容可以分為二進位或ASCII
若為ASCII碼時,檔案存取的方法為:
(1) fscanf,fprintf
fscanf讀取檔案
Variable=fscanf(fid,’資料格式’,讀取資料的大小)
格式
%g 表示為浮點數值
%d 表示為十進位數值
%s 表示為字串
A = fscanf(fid,’%5d’) %讀檔案格式為十進位整數
A = fscanf(fid,’%5d’,100) %只讀100筆
fscanf寫入檔案
fprintf(fid,’資料格式’,資料矩陣或變數);
x = 0:.1:1; y = [x; exp(x)];
fid = fopen(‘exp.txt’,’w’);
fprintf(fid,’%6.2f %12.8f\n’,y);
fclose(fid);
(2) Variable=load(‘檔案名稱’)
當然必須先使用save將檔案儲存
如倒案為bb變數為aa
save bb.txt aa -ascii
(存為.txt主要是為了可以看到資料內容)
再由load bb即可
若檔案內容是二進位檔時,檔案存取的方法為:
fread讀取檔案
fread(FID,讀取的資料大小,’資料精度’)
資料精度
char 函符號的字元 (8位元)
uchar 不含正負符號的字元 (8位元)
short 短整數 (16位元,範圍在-215~215-1)
int 整數 (32位元)
long 長整數 (32位元,範圍在-231~231-1)
ushort 不含正負符號的短整數
uint 不含正負符號的短整數
ulong 不含正負符號的短整數
float 單精準浮點小數 (32位元)
double 雙精準浮點小數 (64位元)
a=fread(fid)﹔ 此時a為一串二進位碼
b=char(a’)﹔ 將二進位碼變成橫向的字串
c=str2num(b); 字串變數字
fwrite寫入檔案
fwrite (fid,寫入資料,’資料精度’)
fid = fopen(‘magic5.bin’,’wb’)
fwrite(fid,magic(5),’integer*4′)
EXAMPLE:
fid=fopen(‘exp.txt’,’wt’);
fprintf(fid,’%d %2.1f %4.2f’,10,20,3.2,14.58);
fclose(fid);
x=load(‘exp.txt’);
————————————————————————————————————–
matlab中fwrite函数的具体使用方法实例如下:
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 %表示关闭成功