




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、3.1 文件的打開與關(guān)閉文件的打開與關(guān)閉 3.2 文件的讀寫操作文件的讀寫操作3.3 數(shù)據(jù)文件定位數(shù)據(jù)文件定位 第第3章章 MATLAB文件操作文件操作3.1 文件的打開與關(guān)閉文件的打開與關(guān)閉3.1.1 文件的打開文件的打開fopen函數(shù)的調(diào)用格式為:fid= fopen(文件名,打開方式文件名,打開方式)文件名:待打開的數(shù)據(jù)文件;打開方式:r讀文件,w寫文件,a末尾追加數(shù)據(jù);fid:文件句柄值,用來標識該數(shù)據(jù)文件,其他函數(shù)可以利用它對該數(shù)據(jù)文件進行操作。文件數(shù)據(jù)格式有兩種形式: 二進制文件(缺省格式) 文本文件(ASCII碼)3.1.2 文件的關(guān)閉文件的關(guān)閉文件在進行完讀、寫等操作后,應(yīng)及時
2、關(guān)閉。關(guān)閉文件用fclose函數(shù),調(diào)用格式為:sta=fclose(fid)該函數(shù)關(guān)閉fid所表示的文件。sta表示關(guān)閉文件操作的返回代碼,若關(guān)閉成功,返回0,否則返回1。3.2 文件的讀寫操作文件的讀寫操作3.2.1 二進制文件的讀寫操作二進制文件的讀寫操作1讀二進制文件讀二進制文件fread 函數(shù)可以讀取二進制文件的數(shù)據(jù),并將數(shù)據(jù)存入矩陣。其調(diào)用格式為:A,COUNT=fread(fid,size, precision)其中A用于存放讀取的數(shù)據(jù),COUNT返回所讀取的數(shù)據(jù)元素個數(shù),fid為文件句柄,size為可選項,若不選用則讀取整個文件內(nèi)容,若選用則它的值可以是下列值:(1) N表示讀取
3、 N個元素到一個列向量。(2) Inf表示讀取整個文件。(3) M,N表示讀數(shù)據(jù)到MN的矩陣中,數(shù)據(jù)按列存放。precision代表讀寫數(shù)據(jù)的類型2寫二進制文件寫二進制文件fwrite 函數(shù)按照指定的數(shù)據(jù)類型將矩陣中的元素寫入到文件中。其調(diào)用格式為:COUNT=fwrite (fid, A, precision)其中COUNT返回所寫的數(shù)據(jù)元素個數(shù),fid為文件句柄,A用來存放寫入文件的數(shù)據(jù),precision用于控制所寫數(shù)據(jù)的類型,其形式與fread函數(shù)相同。例3-1 建立一數(shù)據(jù)文件magic5.dat,用于存放5階魔方陣。程序如下:fid=fopen(magic5.dat,w);cnt=f
4、write(fid,magic(5),int32);fclose(fid);fid=fopen(magic5.dat,r);A,cnt=fread(fid,int32);fclose(fid);3.2.2 文本文件的讀寫操作文本文件的讀寫操作1讀文本文件讀文本文件fscanf 函數(shù)的調(diào)用格式為:A,COUNT= fscanf (fid, format, size)其中A用以存放讀取的數(shù)據(jù),COUNT返回所讀取的數(shù)據(jù)元素個數(shù)。fid為文件句柄。format用以控制讀取的數(shù)據(jù)格式,由%加上格式符組成,常見的格式符有d,f,c,s。size為可選項,決定矩陣A中數(shù)據(jù)的排列形式。2寫文本文件寫文本文件
5、fprintf 函數(shù)的調(diào)用格式為:COUNT= fprintf(fid, format, A)其中A存放要寫入文件的數(shù)據(jù)。先按format指定的格式將數(shù)據(jù)矩陣A格式化,然后寫入到fid所指定的文件。格式符與fscanf函數(shù)相同。x = 0:.2:1;y = x; exp(x);fid = fopen(exp.txt,w);fprintf(fid,%6.2f %12.8fn,y);fclose(fid)fid=fopen(magic5.dat,w);fprintf(fid,%6.2f, magic(5);fclose(fid);例例3-2 比較文本格式和二進制格式I/O讀寫時間num = 100
6、; % Loop for 100 timesout_array = randn(1,10000);% Binary format output operation.tic; % Reset timerfor ii = 1:num fid,msg = fopen(unformatted.dat,w); count = fwrite(fid,out_array,float64); status = fclose(fid);endfprintf (Binary file = %6.3fn,toc);% ASCII format output operation.tic; % Reset timerf
7、or ii = 1:num fid,msg = fopen(formatted.dat,wt); count = fprintf(fid,%23.15en,out_array); status = fclose(fid);endfprintf (ASCII file = %6.3fn,toc);將隨機陣改為out_array = randn(1,100000); testBinary file = 0.078ASCII file = 2.121相差相差26倍倍(主頻主頻 3GHz) testBinary file = 0.156ASCII file = 20.904相差相差133倍倍3.3 數(shù)
8、據(jù)文件定位數(shù)據(jù)文件定位MATLAB提供了與文件定位操作有關(guān)的函數(shù)fseek和ftell。fseek函數(shù)用于定位文件位置指針,其調(diào)用格式為:status=fseek(fid, offset, origin)其中fid為文件句柄,offset表示位置指針相對移動的字節(jié)數(shù),origin表示位置指針移動的參照位置。若定位成功,status返回值為0,否則返回值為1。ftell函數(shù)返回文件指針的當前位置,其調(diào)用格式為:position=ftell (fid)返回值為從文件開始到指針當前位置的字節(jié)數(shù)。若返回值為1表示獲取文件當前位置失敗。3.4 出錯信息出錯信息ferror可查詢文件的輸入、輸出錯誤信息。
9、lmessage = ferror(fid)返回文件的輸入、輸出錯誤信息;lmessage,errnum = ferror(.)返回文件的輸入輸出錯誤信息和錯誤狀態(tài)數(shù)目;lmessage = ferror(fid,clear)清除文件的輸入、輸出錯誤信息ftell函數(shù)返回文件指針的當前位置,其調(diào)用格式為:position=ftell (fid)返回值為從文件開始到指針當前位置的字節(jié)數(shù)。若返回值為1表示獲取文件當前位置失敗。例例3-3 fseek 和ferror 的聯(lián)合應(yīng)用fid, msg = fopen(x, r);status = fseek(fid, -10, bof);if status
10、 = 0msg = ferror(fid);disp(msg);end不可能設(shè)置文件指針在文件開始之前的第10個字節(jié)上面。fseek 返回-1,ferror獲取錯誤信息,輸出。Offset is bad - before beginning-of-file.3.5 exist 函數(shù)檢測對象是否存在: 工作區(qū)變量 系統(tǒng)函數(shù) 搜索路徑中文件形式如下ident = exist(item);ident = exist(item, kind); 返回值ident:0 沒有發(fā)現(xiàn)1 為當前工作區(qū)的變量2 為m 文件或未知類型的文件5 是一個系統(tǒng)函數(shù)7 條目是一個目錄 查找類型kind :builtin系統(tǒng)函數(shù)dir路徑(文件夾)file磁盤文件var工作區(qū)變量例例3-4 exist在在寫文件操作中的應(yīng)用function testout_f = input(Enter output filename: ,s);if exist(out_f,file) % 文件存在否 disp(Output file already exists.); yn = input(Keep existing file? (y/n) ,s); if yn
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化妝學(xué)校合同范本
- 包車居間服務(wù)合同范本
- 鄉(xiāng)村園林出售合同范本
- 別墅大門購買合同范本
- 醫(yī)療旅行合同范本
- 倉庫分租協(xié)議合同范例
- 分包非標工程合同范本
- 勞動配送合同范本
- 上牌購車合同范本
- 公寓欄桿維修合同范本
- 2024 河北公務(wù)員考試(筆試、省直、A類、C類)4套真題及答案
- 廈門2025年福建廈門市公安文職人員服務(wù)中心招聘17人筆試歷年參考題庫附帶答案詳解
- 2025年高三歷史教學(xué)工作計劃
- 《職業(yè)性肌肉骨骼疾患的工效學(xué)預(yù)防指南 》
- 不同產(chǎn)地筠連紅茶風味化學(xué)成分差異分析
- DB50 577-2015 汽車整車制造表面涂裝大氣污染物排放標準
- 生態(tài)安全課件
- 消防風道風管施工方案
- 大學(xué)英語(西安歐亞學(xué)院)知到智慧樹章節(jié)測試課后答案2024年秋西安歐亞學(xué)院
- 人教版高中英語挖掘文本深度學(xué)習-選修四-UNIT-2-(答案版)
- 八下冀教版英語單詞表
評論
0/150
提交評論