第18章 matlabMATLAB 文件IO操作_第1頁
第18章 matlabMATLAB 文件IO操作_第2頁
第18章 matlabMATLAB 文件IO操作_第3頁
第18章 matlabMATLAB 文件IO操作_第4頁
第18章 matlabMATLAB 文件IO操作_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、技術(shù)凝聚實(shí)力技術(shù)凝聚實(shí)力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版第18章 MATLAB 文件I/O操作lMATLAB程序可以看作數(shù)據(jù)處理器,該處理器從外部源(文件、網(wǎng)絡(luò)、磁盤等)讀入數(shù)據(jù),并將處理結(jié)果輸出到指定設(shè)備(文件、網(wǎng)絡(luò)、磁盤等),即I/O操作,如圖所示。MATLAB的I/O操作在實(shí)際中經(jīng)常被用到,例如將MATLAB處理結(jié)果數(shù)據(jù)存儲到文件中以備查看或其他程序做進(jìn)一步處理,或輸出中間結(jié)果到文件以備調(diào)試等。l本章主要介紹MATLAB與文件的數(shù)據(jù)交換操作,即文件I/O操作,在MATLAB中提供了許多讀取和寫入文件的函數(shù),通過這些函數(shù)可以控制I/O操作更多的細(xì)節(jié)。技術(shù)凝聚實(shí)力技術(shù)凝聚實(shí)力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版

2、18.1 MATLAB可讀取文件格式l在MATLAB中許多文件格式都是可以讀取的,可在MATLAB help 里搜索Supported File Formats得到如圖所示的列表,顯示了MATLAB可讀取文件的格式、文件內(nèi)容、文件的擴(kuò)展名以及MATLAB提供的函數(shù)。技術(shù)凝聚實(shí)力技術(shù)凝聚實(shí)力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版18.2 高級文件I/O程序l高級文件程序包括現(xiàn)成的函數(shù),可以用來讀寫特殊格式的數(shù)據(jù),并且只需要少量的編程。例如,如果用戶有一個(gè)包含數(shù)值和字母的文本文件(text file)想導(dǎo)入MATLAB,用戶可以調(diào)用一些低級文件程序自己寫一個(gè)函數(shù),或者是直接用TEXTREAD函數(shù)。使用高級文件程

3、序的關(guān)鍵是:文件必須是相似的(homogeneous),也就是說,文件必須有一致的格式。下面將結(jié)合實(shí)例來說明高級文件I/O程序,這些程序語法都相對簡單,本節(jié)中將不過多的闡述,主要通過實(shí)例進(jìn)行說明。技術(shù)凝聚實(shí)力技術(shù)凝聚實(shí)力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版18.2.1 LOAD/SAVE函數(shù)lLOAD和SAVE函數(shù)是主要的高級文件I/O程序。LOAD可以讀取MAT文件或者用空格間隔的格式相似的ASCII 文件。SAVE可以將MATLAB變量寫入MAT格式文件或者空格間隔的ASCII文件。SAVE函數(shù)的調(diào)用格式為:save filename list of variables options。l說明:如果只

4、有save,那么當(dāng)前工作區(qū)內(nèi)的所有數(shù)據(jù)存儲在一個(gè)名為matlab.mat的文件中。如果后面有一個(gè)文件名,那么這些數(shù)據(jù)將會存儲在“filename.mat”的文件中。如果后面還包括一系列的變量,那么就只存儲這些特殊的變量。技術(shù)凝聚實(shí)力技術(shù)凝聚實(shí)力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版18.2.2 UIGETFILE/UIPUTFILE函數(shù)lUIGETFILE/UIPUTFILE是基于圖形用戶界面(GUI)的。UIGETFILE函數(shù)讓用戶選擇一個(gè)文件來寫(類似與Windows 菜單欄中的另存為選項(xiàng));UIPUTFILE函數(shù)既可以選擇已存在的文件改寫,也可以輸入新的文件名。技術(shù)凝聚實(shí)力技術(shù)凝聚實(shí)力專業(yè)創(chuàng)新出版專業(yè)

5、創(chuàng)新出版18.2.3 UIIMPORT/IMPORTDATA函數(shù)lUIIMPORT是基于GUI的功能強(qiáng)大的高級文件程序,用于讀取復(fù)雜的數(shù)據(jù)文件。IMPORTDATA具有UIIMPORT功能,但不打開GUI。技術(shù)凝聚實(shí)力技術(shù)凝聚實(shí)力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版18.2.4 TEXTREAD/STRREAD函數(shù)lTEXTREAD是一個(gè)強(qiáng)大的動(dòng)態(tài)高級文件I/O程序,主要用來讀取ASCII格式的文本或數(shù)值數(shù)據(jù)文件。除了從字符串讀取外,在讀取文件時(shí)STRREAD類似于TEXTREAD。兩個(gè)函數(shù)可以用諸多參數(shù)來改變其具體的工作方式,它們返回用戶指定輸出的數(shù)據(jù)。技術(shù)凝聚實(shí)力技術(shù)凝聚實(shí)力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版1

6、8.3 低級文件I/O程序lMATLAB提供了基于C語言實(shí)現(xiàn)的低級文件I/O函數(shù)。用這些低級文件I/O函數(shù),MATLAB可以讀寫你所知道的任意文件格式。MATLAT中的這種基本的低級文件I/O命令如表所示。低級文件I/OMATLAB低級文件I/O函數(shù)fclose關(guān)閉文件Feof測試文件結(jié)束ferror查詢文件I/O的錯(cuò)誤狀態(tài)fgetl讀文件的行,忽略回行符fgets讀文件的行,包括回行符fopen打開文件fprintf把格式化數(shù)據(jù)寫到文件或屏幕上fread從文件中讀二進(jìn)制數(shù)據(jù)frewind返回到文件開始fscanf從文件中讀格式化數(shù)據(jù)fseek設(shè)置文件位置指示符ftell獲取文件位置指示符fw

7、rite把二進(jìn)制數(shù)據(jù)寫到文件里技術(shù)凝聚實(shí)力技術(shù)凝聚實(shí)力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版18.3.1 FOPEN函數(shù)lfopen函數(shù)打開一個(gè)文件并返回這個(gè)文件的文件句柄值。它的基本調(diào)用形式如下:lfid = fopen(filename, permission) l說明:其中fid用于存儲文件句柄值,如果返回的句柄值大于0,則說明文件打開成功。文件名filename用字符串形式,表示待打開的數(shù)據(jù)文件。Permission表示打開方式,常見的打開方式如表所示。FOPEN函數(shù)打開方式打開方式描 述r只讀方式打開文件(默認(rèn)的打開方式),該文件必須已存在r+讀寫方式打開文件,打開后先讀后寫,該文件必須已存在w打

8、開后寫入數(shù)據(jù)。若該文件存在則更新;不存在則創(chuàng)建w+讀寫方式打開文件,先讀后寫。若該文件存在則更新;不存在則創(chuàng)建a在打開的文件末端添加數(shù)據(jù)。若文件不存在則創(chuàng)建a+打開文件后,先讀入數(shù)據(jù)再添加數(shù)據(jù)。文件不存在則創(chuàng)建技術(shù)凝聚實(shí)力技術(shù)凝聚實(shí)力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版18.3.2 FCLOSE函數(shù)lfclose函數(shù)用來關(guān)閉打開的文件并返回文件操作碼。文件在進(jìn)行讀、寫等操作后,應(yīng)及時(shí)關(guān)閉,以免數(shù)據(jù)丟失。fclose的調(diào)用格式為:lstatus = fclose(fid)l說明:該函數(shù)關(guān)閉fid所表示的文件。status為關(guān)閉文件操作的返回代碼,若關(guān)閉文件成功,返回0,否則返回-1。若要關(guān)閉所有已打開的文件

9、使用fclose(all)。技術(shù)凝聚實(shí)力技術(shù)凝聚實(shí)力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版18.3.3 FWRITE函數(shù)lfwrite函數(shù)按照指定的數(shù)據(jù)精度將矩陣中的元素寫入到文件中。其調(diào)用格式為:lcount = fwrite(fid, A, precision)l說明:其中count返回所寫的數(shù)據(jù)元素個(gè)數(shù),fid為文件句柄,A用來存放寫入文件的數(shù)據(jù),precision代表數(shù)據(jù)精度,常用的數(shù)據(jù)精度如表所示。默認(rèn)的數(shù)據(jù)精度為uint8。MATLAB中的數(shù)據(jù)精度表MATLAB描 述schar 8位有符號整數(shù)uchar 8位無符號整數(shù)int88位整數(shù)int1616位整數(shù)int3232位整數(shù)int6464位整數(shù)u

10、int88位無符號整數(shù)uint16 16位無符號整數(shù)uint32 32位無符號整數(shù)uint64 64位無符號整數(shù)float3232位浮點(diǎn)float6464位浮點(diǎn)double64位浮點(diǎn)技術(shù)凝聚實(shí)力技術(shù)凝聚實(shí)力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版18.3.4 FREAD函數(shù)lfread函數(shù)可以讀取二進(jìn)制文件的數(shù)據(jù),并將數(shù)據(jù)存入矩陣。其調(diào)用格式為:lA, count = fread(fid, count, precision)l說明:其中A是用于存放讀取數(shù)據(jù)的矩陣、count是返回所讀取的數(shù)據(jù)元素個(gè)數(shù)、fid為文件句柄、size為可選項(xiàng),若不選用則讀取整個(gè)文件內(nèi)容;若選用,則它的值可以取下列值:N(讀取N個(gè)元素

11、到一個(gè)列向量)、inf(讀取整個(gè)文件)、M,N(讀數(shù)據(jù)到MN的矩陣中,數(shù)據(jù)按列存放)。precision用于控制所寫數(shù)據(jù)的精度,其形式與fwrite函數(shù)相同。技術(shù)凝聚實(shí)力技術(shù)凝聚實(shí)力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版18.3.5 FSCANF函數(shù)lfscanf函數(shù)可以讀取文本文件的內(nèi)容,并按指定格式存入矩陣。其調(diào)用格式為:lA,count = fscanf(fid, format, size)l說明:其中A用來存放讀取的數(shù)據(jù),COUNT返回所讀取的數(shù)據(jù)元素個(gè)數(shù),fid為文件句柄,format用來控制讀取的數(shù)據(jù)格式,由%加上格式符組成,常見的格式符有:d(整型)、f(浮點(diǎn)型)、s(字符串型)、c(字符型)等,在%與格式符之間還可以插入附加格式說明符,如%12f。size為可選項(xiàng),決定矩陣A中數(shù)據(jù)的大小,它可以取下列值:N(讀取N個(gè)元素到一個(gè)列向量)、inf(讀取整個(gè)文件)、M,N(讀數(shù)據(jù)到MN的矩陣中,數(shù)據(jù)按列存放)。技術(shù)凝聚實(shí)力技術(shù)凝聚實(shí)力專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版18.3.6 FPRINTF函數(shù)lfprintf函數(shù)可以將數(shù)據(jù)按指定格式寫入到文本文件中。其調(diào)用格式為:lcount = fprintf(fid, form

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論