




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、文件操作是一種重要的輸入輸出方式,即從數(shù)據(jù)文件讀取數(shù)據(jù)或?qū)⒔Y(jié)果寫入數(shù)據(jù)文件。MATLAB提供了一系列低層輸入輸出函數(shù),專門用于文件操作。1、文件的打開與關閉 1)打開文件在讀寫文件之前,必須先用fopen函數(shù)打開或創(chuàng)建文件,并指定對該文件進行的操作方式。fopen函數(shù)的調(diào)用格式為:fid=fopen(文件名,打開方式)說明:其中fid用于存儲文件句柄值,如果返回的句柄值大于0,則說明文件打開成功。文件名用字符串形式,表示待打開的數(shù)據(jù)文件。常見的打開方式如下: r:只讀方式打開文件(默認的方式),該文件必須已存在。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另外,在這些字符串后添加一個“t”,如rt或wt+,則將該文件以文本方式打開;如果添加的是“b”,則以二進制格式打開,這也是fopen函數(shù)默認的打開方式。2)關閉文件文件在進行完讀、寫等操作后,應及時關閉,以免數(shù)據(jù)丟失。關閉文件用fclose函數(shù),調(diào)用格式為:stafclose(fid)說明:該函數(shù)關閉fid所表示的文件。sta表示關閉文件操作的返回代碼,若關閉
3、成功,返回0,否則返回-1。如果要關閉所有已打開的文件用fclose(all)。 2、二進制文件的讀寫操作1)寫二進制文件fwrite函數(shù)按照指定的數(shù)據(jù)精度將矩陣中的元素寫入到文件中。其調(diào)用格式為:COUNTfwrite(fid,A,precision)說明:其中COUNT返回所寫的數(shù)據(jù)元素個數(shù)(可缺省),fid為文件句柄,A用來存放寫入文件的數(shù)據(jù),precision代表數(shù)據(jù)精度,常用的數(shù)據(jù)精度有:char、uchar、int、long、float、double等。缺省數(shù)據(jù)精度為uchar,即無符號字符格式。例6.8 將一個二進制矩陣存入磁盤文件中。>> a=1 2 3
4、4 5 6 7 8 9;>> fid=fopen('d:test.bin','wb') %以二進制數(shù)據(jù)寫入方式打開文件fid = 3 %其值大于0,表示打開成功>> fwrite(fid,a,'double')ans = 9 %表示寫入了9個數(shù)據(jù)>> fclose(fid)ans = 0 %表示關閉成
5、功2)讀二進制文件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)容;若選用則它的值可以是下列值:N(讀取N個元素到一個列向量)、inf(讀取整個文件)、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ù)元素個數(shù),fid為文件句柄,format用來控制讀取的數(shù)據(jù)格式,由%加上格式符組成,常見的格式符有:d(整型)、f(浮點型)、s(字符串型)、c(字符型)等,在%與格式符之間還可以插入附加格式說明符,如數(shù)據(jù)寬度說明等。size為可選項,決定矩陣A中數(shù)據(jù)的排列形式,它可以取下列值:N(讀取N個元素到一個列向量)、inf(讀取整個文件)、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)個人感覺用的最多的是這樣的形式:data = fscanf(fid,format,size);其中data為讀取內(nèi)容的數(shù)組,它的大小由size決定。size是一個m n的向量,m為行,n為列(注意,這里讀取的順序是按列優(yōu)先排列的,不明白的話可以看下面的例子),若n取inf表示讀到文件末尾。fid為fopen打開文件的返回值,format是格式化參數(shù)(像printf、scanf)。舉個小例子:路徑+文件名: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ù)存在一個數(shù)組里,可以用如下方法:fid=fopen('d:moon.txt');data=fscanf(fid,'%f,%f,%f',3,inf) ;%這里得用單引號fclose(fid);這時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)建一個字符矩陣并存入磁盤,再讀出賦值給另一個矩陣。>> 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');%得到文件號f,count=fscanf(fid,'%f %f',12,90);%把文件號1的數(shù)據(jù)讀到f中。其中f是12 90的矩陣%這里'%f %f'表示讀取數(shù)據(jù)的形式,按原始數(shù)據(jù)型讀出fclose(fid);%關閉文件&
12、#160;另外有的txt文件還可以用load來打開其語句為f=load('fx.txt)我個人覺得用第一種方式較好。因為有些時候,特別是fx.txt 的一行種有多個數(shù)據(jù)時用load就比較麻煩了。 4.數(shù)據(jù)文件定位MATLAB提供了與文件定位操作有關的函數(shù)fseek和ftell。fseek函數(shù)用于定位文件位置指針,其調(diào)用格式為:status=fseek(fid, offset, origin)其中fid為文件句柄,offset表示位置指針相對移動的字節(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表示位置指針移動的參照位置,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ù)返回文件指針的當前位置,其調(diào)用格式為:position=ftell (fid)返回值為從文件開始到指針當前位置的字節(jié)數(shù)。若返回值為1表示獲取文件當前位置失敗。例: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文件指針可以移動到當前文件末尾的后面,但不能移動到開頭的前面;當把指針移動到文件末尾后面時,若關閉文件則文件大小會自動增長到文件指針所指的大小,用這種方法可以很容易創(chuàng)建一個很大的文件,當然新增加的文件內(nèi)容是隨機的。 【附錄: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表示指針移動參考當前位置ny=fscanf(fid,
17、9;%d',1);fscanf(fid,'n'); xmin=fscanf(fid,'%f',1);%讀取x的最小值和最大值fseek(fid,4,1); %4表示讀取文件指針向后偏移4位,1表示指針移動參考位置為文件結(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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 縱隔占位影像診斷
- 工廠承包貨柜方案簡單
- 原料檢驗面試題及答案
- 醫(yī)院感染病例報告制度與流程
- 腦卒中康復面試題及答案
- 貨物類投標技術(shù)方案
- 首都機場考試題庫及答案
- 機構(gòu)對外宣傳方案模板
- 小兒結(jié)核病護理
- 酒店培訓內(nèi)容課件
- 湖北省黃岡市2024-2025學年高一下學期期末質(zhì)量監(jiān)測數(shù)學試卷
- 撤資合同范本:投資撤資協(xié)議書
- 醫(yī)保drg付費課件培訓
- 彩妝知識培訓
- 羊水栓塞護理
- 云南省曲靖市宣威市民中2025屆高一化學第二學期期末檢測試題含解析
- 2024年寧夏銀川金鳳區(qū)社區(qū)專職工作者考試真題
- 2025至2030全球及中國帆船行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 北京海淀街道社區(qū)衛(wèi)生服務中心招聘筆試真題2024
- 新疆天富能源股份有限公司2024年度商譽減值測試資產(chǎn)評估報告
-
評論
0/150
提交評論