下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、文件操作是一種重要的輸入輸出方式,即從數(shù)據(jù)文件讀取數(shù)據(jù)或?qū)⒔Y(jié)果寫入數(shù)據(jù)文件。MATLAB提供了一系列低層輸入輸出函數(shù),專門用于文件操作。1、文件的打開與關(guān)閉 1)打開文件在讀寫文件之前,必須先用fopen函數(shù)打開或創(chuàng)建文件,并指定對(duì)該文件進(jìn)行的操作方式。fopen函數(shù)的調(diào)用格式為:fid=fopen(文件名,打開方式)說明:其中fid用于存儲(chǔ)文件句柄值,如果返回的句柄值大于0,則說明文件打開成功。文件名用字符串形式,表示待打開的數(shù)據(jù)文件。常見的打開方式如下: r:只讀方式打開文件(默認(rèn)的方式),該文件必須已存在。l r+:讀寫方式打開文件,打開后先讀后寫。該文件必須已存在。l w:打
2、開后寫入數(shù)據(jù)。該文件已存在則更新;不存在則創(chuàng)建。l w+:讀寫方式打開文件。先讀后寫。該文件已存在則更新;不存在則創(chuàng)建。l a:在打開的文件末端添加數(shù)據(jù)。文件不存在則創(chuàng)建。l a+:打開文件后,先讀入數(shù)據(jù)再添加數(shù)據(jù)。文件不存在則創(chuàng)建。l另外,在這些字符串后添加一個(gè)“t”,如rt或wt+,則將該文件以文本方式打開;如果添加的是“b”,則以二進(jìn)制格式打開,這也是fopen函數(shù)默認(rèn)的打開方式。2)關(guān)閉文件文件在進(jìn)行完讀、寫等操作后,應(yīng)及時(shí)關(guān)閉,以免數(shù)據(jù)丟失。關(guān)閉文件用fclose函數(shù),調(diào)用格式為:stafclose(fid)說明:該函數(shù)關(guān)閉fid所表示的文件。sta表示關(guān)閉文件操作的返回代碼,若關(guān)閉
3、成功,返回0,否則返回-1。如果要關(guān)閉所有已打開的文件用fclose(all)。 2、二進(jìn)制文件的讀寫操作1)寫二進(jìn)制文件fwrite函數(shù)按照指定的數(shù)據(jù)精度將矩陣中的元素寫入到文件中。其調(diào)用格式為:COUNTfwrite(fid,A,precision)說明:其中COUNT返回所寫的數(shù)據(jù)元素個(gè)數(shù)(可缺?。?,fid為文件句柄,A用來存放寫入文件的數(shù)據(jù),precision代表數(shù)據(jù)精度,常用的數(shù)據(jù)精度有:char、uchar、int、long、float、double等。缺省數(shù)據(jù)精度為uchar,即無符號(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ù)寫入方式打開文件fid = 3 %其值大于0,表示打開成功>> 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)說明:其中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)說明:其中A用來存放讀取的數(shù)據(jù),COUNT返回所讀取的數(shù)據(jù)元素個(gè)數(shù),fid為文件句柄,format用來控制讀取的數(shù)據(jù)格式,由%加上格式符組成,常見的格式符有:d(整型)、f(浮點(diǎn)型)、s(字符串型)、c(字符型)等,在%與格式符之間還可以插入附加格式說明符,如數(shù)據(jù)寬度說明等。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è)人感覺用的最多的是這樣的形式:data = fscanf(fid,format,size);其中data為讀取內(nèi)容的數(shù)組,它的大小由size決定。size是一個(gè)m n的向量,m為行,n為列(注意,這里讀取的順序是按列優(yōu)先排列的,不明白的話可以看下面的例子),若n取inf表示讀到文件末尾。fid為fopen打開文件的返回值,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ù)組中的某行或某列來畫圖,方法是data(m,:) 或者 data(:,n),即取得data數(shù)組的第m行或第n列。 2)寫文本文件fprintf
10、函數(shù)可以將數(shù)據(jù)按指定格式寫入到文本文件中。其調(diào)用格式為:fprintf(fid,format,A)說明:fid為文件句柄,指定要寫入數(shù)據(jù)的文件,format是用來控制所寫數(shù)據(jù)格式的格式符,與fscanf函數(shù)相同,A是用來存放數(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來打開其語句為f=load('fx.txt)我個(gè)人覺得用第一種方式較好。因?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)返回值為從文件開始到指針當(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)到開頭的前面;當(dāng)把指針移動(dòng)到文件末尾后面時(shí),若關(guān)閉文件則文件大小會(huì)自動(dò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是按照列的順序來存放數(shù)據(jù)的,先存第1列,然后第2列,依次到
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年餐飲供貨合同協(xié)議書范本
- 合同簽訂即生效 股權(quán)變更避風(fēng)險(xiǎn)
- 組織架構(gòu)及崗位職責(zé)
- 指定汽車維修服務(wù)協(xié)議
- 年度項(xiàng)目可行性研究報(bào)告購買合同
- 勞動(dòng)合同書【鄉(xiāng)鎮(zhèn)企業(yè)】
- 園林苗木購銷合同范本
- 場地游戲安全協(xié)議書經(jīng)典版
- 2024年個(gè)人勞務(wù)協(xié)議書
- 2024股權(quán)轉(zhuǎn)讓合同協(xié)議書范本
- 期中測試卷-2024-2025學(xué)年統(tǒng)編版語文一年級(jí)上冊(cè)
- 國家基本醫(yī)療保險(xiǎn)、工傷保險(xiǎn)和生育保險(xiǎn)藥品目錄(2023年)
- 人教版一年級(jí)數(shù)學(xué)上冊(cè)《第一、二單元測試卷》(附答案)
- 人教版二年級(jí)上冊(cè)數(shù)學(xué)計(jì)算題400道
- 供應(yīng)室教學(xué)課件
- 第三單元 測量(單元測試)-2024-2025學(xué)年三年級(jí)上冊(cè)數(shù)學(xué)人教版
- 1輸變電工程施工質(zhì)量驗(yàn)收統(tǒng)一表式(線路工程)-2024年版
- 華為年財(cái)務(wù)報(bào)表分析(共16張課件)
- 第五單元 倍的認(rèn)識(shí)(單元測試)-2024-2025學(xué)年三年級(jí)上冊(cè)數(shù)學(xué)人教版
- 讓我們一起去追“星”!兩彈一星之核彈老人魏世杰課件高二下學(xué)期愛國主義教育主題班會(huì)
- 2024-2025學(xué)年七年級(jí)生物上冊(cè) 第二單元第一、二章 單元測試卷( 人教版)
評(píng)論
0/150
提交評(píng)論