




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、文件操作是一種重要的輸入輸出方式,即從數(shù)據(jù)文件讀取數(shù)據(jù)或?qū)⒔Y(jié)果寫入數(shù)據(jù)文件。MATLAB提供了一系列低層輸入輸出函數(shù),專門用于文件操作。1、文件的打開(kāi)與關(guān)閉 1)打開(kāi)文件在讀寫文件之前,必須先用fopen函數(shù)打開(kāi)或創(chuàng)建文件,并指定對(duì)該文件進(jìn)行的操作方式。fopen函數(shù)的調(diào)用格式為:fid=fopen(文件名,打開(kāi)方式)說(shuō)明:其中fid用于存儲(chǔ)文件句柄值,如果返回的句柄值大于0,則說(shuō)明文件打開(kāi)成功。文件名用字符串形式,表示待打開(kāi)的數(shù)據(jù)文件。常見(jiàn)的打開(kāi)方式如下: r:只讀方式打開(kāi)文件(默認(rèn)的方式),該文件必須已存在。l r+:讀寫方式打開(kāi)文件,打開(kāi)后先讀后寫。該文件必須已存在。l w:打
2、開(kāi)后寫入數(shù)據(jù)。該文件已存在則更新;不存在則創(chuàng)建。l w+:讀寫方式打開(kāi)文件。先讀后寫。該文件已存在則更新;不存在則創(chuàng)建。l a:在打開(kāi)的文件末端添加數(shù)據(jù)。文件不存在則創(chuàng)建。l a+:打開(kāi)文件后,先讀入數(shù)據(jù)再添加數(shù)據(jù)。文件不存在則創(chuàng)建。l另外,在這些字符串后添加一個(gè)“t”,如rt或wt+,則將該文件以文本方式打開(kāi);如果添加的是“b”,則以二進(jìn)制格式打開(kāi),這也是fopen函數(shù)默認(rèn)的打開(kāi)方式。2)關(guān)閉文件文件在進(jìn)行完讀、寫等操作后,應(yīng)及時(shí)關(guān)閉,以免數(shù)據(jù)丟失。關(guān)閉文件用fclose函數(shù),調(diào)用格式為:stafclose(fid)說(shuō)明:該函數(shù)關(guān)閉fid所表示的文件。sta表示關(guān)閉文件操作的返回代碼,若關(guān)閉
3、成功,返回0,否則返回-1。如果要關(guān)閉所有已打開(kāi)的文件用fclose(all)。 2、二進(jìn)制文件的讀寫操作1)寫二進(jìn)制文件fwrite函數(shù)按照指定的數(shù)據(jù)精度將矩陣中的元素寫入到文件中。其調(diào)用格式為:COUNTfwrite(fid,A,precision)說(shuō)明:其中COUNT返回所寫的數(shù)據(jù)元素個(gè)數(shù)(可缺省),fid為文件句柄,A用來(lái)存放寫入文件的數(shù)據(jù),precision代表數(shù)據(jù)精度,常用的數(shù)據(jù)精度有:char、uchar、int、long、float、double等。缺省數(shù)據(jù)精度為uchar,即無(wú)符號(hào)字符格式。例6.8 將一個(gè)二進(jìn)制矩陣存入磁盤文件中。>> a=1 2 3
4、4 5 6 7 8 9;>> fid=fopen('d:test.bin','wb') %以二進(jìn)制數(shù)據(jù)寫入方式打開(kāi)文件fid = 3 %其值大于0,表示打開(kāi)成功>> fwrite(fid,a,'double')ans = 9 %表示寫入了9個(gè)數(shù)據(jù)>> fclose(fid)ans = 0 %表示關(guān)閉成
5、功2)讀二進(jìn)制文件fread函數(shù)可以讀取二進(jìn)制文件的數(shù)據(jù),并將數(shù)據(jù)存入矩陣。其調(diào)用格式為:A,COUNT=fread(fid,size,precision)說(shuō)明:其中A是用于存放讀取數(shù)據(jù)的矩陣、COUNT是返回所讀取的數(shù)據(jù)元素個(gè)數(shù)、fid為文件句柄、size為可選項(xiàng),若不選用則讀取整個(gè)文件內(nèi)容;若選用則它的值可以是下列值:N(讀取N個(gè)元素到一個(gè)列向量)、inf(讀取整個(gè)文件)、M,N(讀數(shù)據(jù)到M×N的矩陣中,數(shù)據(jù)按列存放)。 precision用于控制所寫數(shù)據(jù)的精度,其形式與fwrite函數(shù)相同。 3、文本文件的讀寫操作1)讀文本文件fscanf函數(shù)可以讀取文本文件的內(nèi)容,
6、并按指定格式存入矩陣。其調(diào)用格式為:A,COUNT=fscanf(fid,format,size)說(shuō)明:其中A用來(lái)存放讀取的數(shù)據(jù),COUNT返回所讀取的數(shù)據(jù)元素個(gè)數(shù),fid為文件句柄,format用來(lái)控制讀取的數(shù)據(jù)格式,由%加上格式符組成,常見(jiàn)的格式符有:d(整型)、f(浮點(diǎn)型)、s(字符串型)、c(字符型)等,在%與格式符之間還可以插入附加格式說(shuō)明符,如數(shù)據(jù)寬度說(shuō)明等。size為可選項(xiàng),決定矩陣A中數(shù)據(jù)的排列形式,它可以取下列值:N(讀取N個(gè)元素到一個(gè)列向量)、inf(讀取整個(gè)文件)、M,N(讀數(shù)據(jù)到M×N的矩陣中,數(shù)據(jù)按列存放)。 matlab中的fscanf的用法如下
7、:A=fscanf(fid,format)A, count=fscanf(fid,format,size) A, count=fscanf(fid,format,size)個(gè)人感覺(jué)用的最多的是這樣的形式:data = fscanf(fid,format,size);其中data為讀取內(nèi)容的數(shù)組,它的大小由size決定。size是一個(gè)m n的向量,m為行,n為列(注意,這里讀取的順序是按列優(yōu)先排列的,不明白的話可以看下面的例子),若n取inf表示讀到文件末尾。fid為fopen打開(kāi)文件的返回值,format是格式化參數(shù)(像printf、scanf)。舉個(gè)小例子:路徑+文件名:d:moo
8、n.txt內(nèi)容:13,1,3.4 3,2.1,23 1, 12, 2 4,5.4,6現(xiàn)在為了讀取moon.txt中的數(shù)據(jù)存在一個(gè)數(shù)組里,可以用如下方法:fid=fopen('d:moon.txt');data=fscanf(fid,'%f,%f,%f',3,inf) ;%這里得用單引號(hào)fclose(fid);這時(shí)data中的數(shù)據(jù)如下:(3行4列,matlab元素按照列的順序排列)13 3
9、; 1 41 2.1 12 5.44 23 2 6 通常我們可能需要用引用數(shù)組中的某行或某列來(lái)畫圖,方法是data(m,:) 或者 data(:,n),即取得data數(shù)組的第m行或第n列。 2)寫文本文件fprintf
10、函數(shù)可以將數(shù)據(jù)按指定格式寫入到文本文件中。其調(diào)用格式為:fprintf(fid,format,A)說(shuō)明:fid為文件句柄,指定要寫入數(shù)據(jù)的文件,format是用來(lái)控制所寫數(shù)據(jù)格式的格式符,與fscanf函數(shù)相同,A是用來(lái)存放數(shù)據(jù)的矩陣。例6.9 創(chuàng)建一個(gè)字符矩陣并存入磁盤,再讀出賦值給另一個(gè)矩陣。>> a='string'>> fid=fopen('d:char1.txt','w');>> fprintf(fid,'%s',a);>> fclose(fid);>> fid
11、1=fopen('d:char1.txt','rt');>> b=fscanf(fid1,'%s')b = stringmatlab讀txt文件fid=fopen('fx.txt','r');%得到文件號(hào)f,count=fscanf(fid,'%f %f',12,90);%把文件號(hào)1的數(shù)據(jù)讀到f中。其中f是12 90的矩陣%這里'%f %f'表示讀取數(shù)據(jù)的形式,按原始數(shù)據(jù)型讀出fclose(fid);%關(guān)閉文件&
12、#160;另外有的txt文件還可以用load來(lái)打開(kāi)其語(yǔ)句為f=load('fx.txt)我個(gè)人覺(jué)得用第一種方式較好。因?yàn)橛行r(shí)候,特別是fx.txt 的一行種有多個(gè)數(shù)據(jù)時(shí)用load就比較麻煩了。 4.數(shù)據(jù)文件定位MATLAB提供了與文件定位操作有關(guān)的函數(shù)fseek和ftell。fseek函數(shù)用于定位文件位置指針,其調(diào)用格式為:status=fseek(fid, offset, origin)其中fid為文件句柄,offset表示位置指針相對(duì)移動(dòng)的字節(jié)數(shù),OFFSET values are interpreted as follows:> 0
13、60; Move toward the end of the file.= 0 Do not change position.< 0 Move toward the beginning of the file.origin表示位置指針移動(dòng)的參照位置,ORIGIN values are interpreted as follows:'bof' or -1 Beginning of file'cof' or 0 Current position
14、 in file'eof' or 1 End of file。若定位成功,status返回值為0,否則返回值為1。 ftell函數(shù)返回文件指針的當(dāng)前位置,其調(diào)用格式為:position=ftell (fid)返回值為從文件開(kāi)始到指針當(dāng)前位置的字節(jié)數(shù)。若返回值為1表示獲取文件當(dāng)前位置失敗。例:FID=fopen('sw.m','r')fseek(FID,10,-1)ans = 0>> ftell(FID)ans = 10
15、>> fseek(FID,-10,1)ans = 0>> ftell(FID)ans = 2180文件指針可以移動(dòng)到當(dāng)前文件末尾的后面,但不能移動(dòng)到開(kāi)頭的前面;當(dāng)把指針移動(dòng)到文件末尾后面時(shí),若關(guān)閉文件則文件大小會(huì)自動(dòng)增長(zhǎng)到文件指針?biāo)傅拇笮?,用這種方法可以很容易創(chuàng)建一個(gè)很大的文件,當(dāng)然新增加的文件內(nèi)容是隨機(jī)的。 【附錄:matlab讀取grd格式文件的源代碼】clc;clear all;close all;fid=fopen(
16、39;C:Zhenghui_CodetestDLLtestForDLLkms04ssh-egm96u.grd','r'); head=fread(fid,4,'uint8=>char')' %讀取文件頭DSAAfscanf(fid,'n'); nx=fscanf(fid,'%d',1);%讀取格網(wǎng)數(shù)據(jù)的行數(shù)nnx,列數(shù)nnzfp=fseek(fid,1,0); %1表示讀取文件指針向后偏移1位,0表示指針移動(dòng)參考當(dāng)前位置ny=fscanf(fid,
17、9;%d',1);fscanf(fid,'n'); xmin=fscanf(fid,'%f',1);%讀取x的最小值和最大值fseek(fid,4,1); %4表示讀取文件指針向后偏移4位,1表示指針移動(dòng)參考位置為文件結(jié)尾xmax=fscanf(fid,'%f',1);fscanf(fid,'n'); ymin=fscanf(fid,'%f',1);%讀取y的最小值和最大值fseek(fid,4,1);ymax=fscanf(fid,'%f',1);fscanf(fid,'n'); zmin=fscanf(fid,'%f',1);%讀取z的最小值和最大值fseek(fid,4,1);zmax=fscanf(fid,'%f',1);fscanf(fid,'n'); for i=1:ny %注意matlab是按照列的順序來(lái)存放數(shù)據(jù)的,先存第1列,然后第2列,依次到
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 促進(jìn)自主創(chuàng)新與合作計(jì)劃
- 培養(yǎng)幼兒觀察能力的探索計(jì)劃
- 2025年無(wú)菌包裝用包裝材料項(xiàng)目建議書
- 制定戰(zhàn)略合作伙伴關(guān)系計(jì)劃
- 可視化工作計(jì)劃的應(yīng)用案例
- 2025年酶法生產(chǎn)海藻糖項(xiàng)目建議書
- 2025年分級(jí)設(shè)備地礦勘測(cè)設(shè)備:鉆探機(jī)項(xiàng)目建議書
- 2025年漲緊輪項(xiàng)目合作計(jì)劃書
- 2025年面板檢測(cè)系統(tǒng)合作協(xié)議書
- 2025年酶標(biāo)記制劑項(xiàng)目發(fā)展計(jì)劃
- 機(jī)器狗:技術(shù)成熟性能優(yōu)越場(chǎng)景剛需放量在即2025
- 2025年村民代表會(huì)議講話稿(3篇)
- 《教育強(qiáng)國(guó)建設(shè)規(guī)劃綱要(2024-2035年)》解讀-知識(shí)培訓(xùn)
- 《加油站安全管理培訓(xùn)課件》
- (一模)烏魯木齊地區(qū)2025年高三年級(jí)第一次質(zhì)量語(yǔ)文試卷(含答案)
- 2024年第四季度 國(guó)家電網(wǎng)工程設(shè)備材料信息參考價(jià)
- 1.北京的春節(jié) 練習(xí)題(含答案)
- 年度得到 · 沈祖蕓全球教育報(bào)告(2024-2025)
- 抗震支架安裝工程施工方案范文
- 2025年中煤科工集團(tuán)北京華宇工程限公司中層干部公開(kāi)招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 新版加油站全員安全生產(chǎn)責(zé)任制
評(píng)論
0/150
提交評(píng)論