![matlab程序設(shè)計(jì)入門20PPT 18-檔案讀寫(共70張)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/14/ac3764e6-2b3c-46a6-80cf-d9ab2a346663/ac3764e6-2b3c-46a6-80cf-d9ab2a3466631.gif)
![matlab程序設(shè)計(jì)入門20PPT 18-檔案讀寫(共70張)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/14/ac3764e6-2b3c-46a6-80cf-d9ab2a346663/ac3764e6-2b3c-46a6-80cf-d9ab2a3466632.gif)
![matlab程序設(shè)計(jì)入門20PPT 18-檔案讀寫(共70張)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/14/ac3764e6-2b3c-46a6-80cf-d9ab2a346663/ac3764e6-2b3c-46a6-80cf-d9ab2a3466633.gif)
![matlab程序設(shè)計(jì)入門20PPT 18-檔案讀寫(共70張)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/14/ac3764e6-2b3c-46a6-80cf-d9ab2a346663/ac3764e6-2b3c-46a6-80cf-d9ab2a3466634.gif)
![matlab程序設(shè)計(jì)入門20PPT 18-檔案讀寫(共70張)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/14/ac3764e6-2b3c-46a6-80cf-d9ab2a346663/ac3764e6-2b3c-46a6-80cf-d9ab2a3466635.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Ch18 檔案讀寫MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案本章重點(diǎn)nMATLAB 內(nèi)建許多有關(guān)檔案讀寫的函數(shù)n對(duì)二進(jìn)制檔案或 ASCII 檔案都可以進(jìn)行處理n開啟n關(guān)閉n儲(chǔ)存MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案高階的檔案讀寫指令n先列出常用讀寫檔案指令,稍后將介紹用法類別支持檔案格式指令一般數(shù)據(jù)MAT - MATLAB workspaceload, saveCSV - Comma separated numberscsvread, csvwriteDAT - Formatted textImportdataDLM - Delimited textdlmread, dlmwriteTAB - T
2、ab separated text電子表格XLS - Excel worksheetXlsreadWK1 - Lotus 123 worksheetwk1read, wk1writeMATLAB 程式設(shè)計(jì)入門篇:讀寫檔案高階的檔案讀寫指令(cont)類別支持檔案格式指令科學(xué)資料CDF - Common Data FormatFITS - Flexiblecdfread, cdfwriteImage Transport SystemFitsreadHDF - Hierarchical Data Formathdfread, hdfwrite電影AVI - Movieaviread影像TIFF,
3、PNG, HDF, BMP, JPEG, GIF, PCX, XWD, CUR, ICO, RAS, PBM, PGM, PPMimread, imwrite音訊AU, SND - NeXT/Sun soundauread, auwriteWAV - Microsoft Wave soundwavread, wavwriteMATLAB 程式設(shè)計(jì)入門篇:讀寫檔案csvreadn使用 csvread 指令來讀取n條件:n數(shù)據(jù)文件是由逗號(hào)分開n只有包含數(shù)值資料nEx:csvread01.mfprintf(data.csv 的內(nèi)容:n);type data.csv% 列出 data.csv 的內(nèi)容A
4、 = csvread(data.csv)% 將 data.csv 的內(nèi)容讀到矩陣 AMATLAB 程式設(shè)計(jì)入門篇:讀寫檔案resultdata.csv 的內(nèi)容:1, 2, 34, 56, 7, 8, 9A =1 2 3 04 5 0 06 7 8 9ncsvread 會(huì)傳回一個(gè)數(shù)值矩陣n其中缺席的資料將以 0 填入。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案dlmreadn如果數(shù)值數(shù)據(jù)的分界符號(hào)(Delimiters)不是逗點(diǎn),就不能使用 csvread 指令,而要改用 dlmread 指令nEx:dlmread01.mfprintf(data.dlm 的內(nèi)容:n);type data.dlm%
5、列出 data.dlm 的內(nèi)容A = dlmread(data.dlm, t)% 將 data.dlm 的內(nèi)容讀到矩陣 AMATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Resultdata.dlm 的內(nèi)容:123456789A =1 2 3 04 5 0 06 7 8 9n上例中data.dlm 的數(shù)據(jù)是以定位鍵(Tab)隔開,因此 dlmread 指令的第二個(gè)自變量是 t,以代表定位鍵MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案textreadn如果檔案數(shù)據(jù)包含數(shù)值及字符串,我們就必須改用 textread 指令nEx:textread01.mfprintf(data.txt 的內(nèi)容:n);type da
6、ta.txt% 列出 data.txt 的內(nèi)容name, hobby, age = textread(data.txt, %s%s%d)MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案resultdata.txt 的內(nèi)容:Timmy OnlineGames 13Annie Chatrooms 10Roger Tennis 41name =TimmyAnnieRogerhobby =OnlineGamesChatroomsTennisage =131041在上述范例中,data.txt 包含三個(gè)字段(或是三直行的數(shù)據(jù))ntextread 可在第二個(gè)自變量指定數(shù)據(jù)型態(tài)n例如上例中 %s 代表字符串,%d 代
7、表整數(shù)n也同時(shí)將讀入的數(shù)據(jù)設(shè)定到不同的輸出自變量n由于數(shù)據(jù)型態(tài)的不同,輸出自變量也有不同的型態(tài)n以上述范例來說,name 和 hobby 都是字符串異值數(shù)組,而 age 則是數(shù)值數(shù)組。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案使用定位鍵來分隔字段n上例中,我們利用空格來分隔字段n如果字段值本身也有空格 ?n改用定位鍵來分隔字段nEx:textread02.mfprintf(data2.txt 的內(nèi)容:n);type data2.txt% 列出 data2.txt 的內(nèi)容name, hobby, age = textread(data2.txt, %s%s%d, delimiter, t)MATLA
8、B 程式設(shè)計(jì)入門篇:讀寫檔案resultn結(jié)果與前一例相同ntextread 指令中加上對(duì)分界字符(Delimiters)的定義,就可以讀出由定位鍵所分隔的數(shù)據(jù)文件n若不指定時(shí),預(yù)設(shè)為空格鍵MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案讀取文字文件ntextread 也可以讀取一個(gè)文字文件n同時(shí)把檔案內(nèi)的每一列文字變成字符串異質(zhì)數(shù)組里面的每一個(gè)元素nEx:textread03.mContents = textread(textread03.m,%s,delimiter,n,whitespace,);class(contents)% 印出 contents 的數(shù)據(jù)類別contents1% 列出 cont
9、ents 第一列contents2% 列出 contents 第二列MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Resultans =cellans =contents=textread(textread03.m,%s,delimiter,n,whitespace,);ans =class(contents)% 印出 contents 的數(shù)據(jù)類別n上例使用 textread 讀入 textread03.m(也就是此范例檔案),并顯示此檔案的第一列和第二列。ntextread 指令的用法還有很多,功能也很強(qiáng)大n在MATLAB下輸入help textreadn可以得到完整的技術(shù)支持。MATLAB 程式設(shè)
10、計(jì)入門篇:讀寫檔案Filereadn若只是要將一個(gè)檔案的內(nèi)容送到一個(gè)字符串,可以使用 fileread 指令nEx:范例16-6:fileread01.mout = fileread(data2.txt);class(out)size(out)MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Resultans =charans =1 64n上例中,fileread 指令會(huì)將檔案 data2.txt 的內(nèi)容送到字符串變量 outnclass(out) 的值是 char ,顯示 out 的數(shù)據(jù)型態(tài)是字符串nsize(out) 顯示字符串 out 的長(zhǎng)度是 64。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案影像與音
11、訊檔案n有關(guān)于影像檔案的讀寫,請(qǐng)參閱本書第十九章影像顯示與讀寫;n有關(guān)音訊檔案的讀寫,請(qǐng)參閱本書第二十章音訊讀寫、錄制與播放。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案更繁復(fù)的檔案格式n一般情況下n盡量采取先前介紹的指令來進(jìn)行讀寫。n數(shù)據(jù)格式比較繁復(fù)時(shí)n需要一列一列讀進(jìn)來n再進(jìn)行剖析(Parsing)n相關(guān)指令將在以下介紹。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案開啟檔案n無論讀寫 ASCII 或二進(jìn)制檔案,都必需先用 fopen 函數(shù)來開啟檔案,語法如:nfid = fopen(filename, permission)n其中 filename 表示欲讀寫的文件名稱npermission 則表示欲
12、對(duì)檔案進(jìn)行的處理方式,可以是下列任一字符串:nlr:只準(zhǔn)讀?。╮eading)檔案nlw:只準(zhǔn)寫入(writing)檔案nla:只準(zhǔn)加入(appending)檔案nla+:可讀取及加入檔案(reading and appending)n省略第二個(gè)自變量,permission 的默認(rèn)值就是 r。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案有關(guān)fopenn在windows下,permission 字符串必需能夠分辨binary或 ASCII 檔案。n例如:若要讀binary檔案,則 permission 字符串必需是“rb”nfopen 另外支持很多 permission 字符串,可輸入 help fo
13、pen 得到完整的信息。nfopen 函數(shù)傳回一個(gè)檔案辨識(shí)碼,通常是個(gè)非負(fù)的整數(shù),我們可用此辨識(shí)碼來對(duì)此檔案進(jìn)行各種讀寫的處理。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Ex:fopen01.mn上例可知當(dāng)檔案不存在時(shí),回傳的 fid 是 1n同時(shí) message 會(huì)包含相關(guān)的錯(cuò)誤信息。fid, message = fopen(no_such_file, r);fprintf(fid = %dn, fid);fprintf(message = %sn, message);fid = -1message = Sorry. No help in figuring out the problem . .
14、 .MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Ex:fopen02.mn若開啟成功,則傳回的 fid 是一個(gè)大于 2 的整數(shù),而且傳回的 message 是一個(gè)空字符串,例如:fid, message = fopen(fopen02.m, r);fprintf(fid = %dn, fid);fprintf(message = %sn, message);fid = 3message =MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Tips:nfopen 可傳回第二個(gè)自變量來顯示錯(cuò)誤訊息。n為了安全起見,最好在每次使用 fopen 時(shí),都測(cè)試其傳回的 fid 是否為有效值。nMATLAB 使用 fid=1
15、 來代表標(biāo)準(zhǔn)輸出(Standard Output)nfid=2 代表標(biāo)準(zhǔn)錯(cuò)誤輸出(Standard Error)n因此在使用這兩個(gè) fid 的值時(shí),可以不必使用 fopen 來開啟檔案。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案關(guān)閉檔案n完成檔案的讀寫之后,可用 fclose 函數(shù)來關(guān)閉檔案,用法如下:nstatus = fclose(fid);n若一切順利,fclose 傳回 0。n若無法順利關(guān)閉檔案,則 fclose 傳回 -1。n為避免因開啟檔案過多而造成系統(tǒng)資源浪費(fèi),一般在完成檔案的讀寫后,即應(yīng)使用 fclose 來關(guān)閉檔案MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Tips:n若要一次關(guān)閉所有
16、開啟的檔案,可用 fclose(all) 或是 fclose all。n開啟及關(guān)閉檔案都是比較耗時(shí)的函數(shù),因此盡量不要將他們置于循環(huán)之中,以提高程序執(zhí)行效率。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案讀取 ASCII 檔案nfgetl 函數(shù):n可將 ASCII 檔案的內(nèi)容中的某一列讀出n并將該列的 ASCII 內(nèi)容以轉(zhuǎn)成字符串傳回。nEx:fgetl01.mfid = fopen(mean.m, r);while feof(fid)=0% feof 測(cè)試檔案指針是否已到達(dá)結(jié)束位置line = fgetl(fid);disp(line);endMATLAB 程式設(shè)計(jì)入門篇:讀寫檔案讀取 ASCII
17、檔案(cont)n執(zhí)行上述程序后,MATLAB 會(huì)n先在目前目錄找尋 mean.mn若找不到,再根據(jù)搜尋路徑,找出 mean.m 指令的位置然后再將其內(nèi)容一列一列地列出。n請(qǐng)自行動(dòng)手試用此范例程序代碼。n輸入which mean可顯示檔案所在的路徑nfgets 和 fgetl 均可由檔案讀取一列數(shù)據(jù):nfgetl 會(huì)舍去換行字符nfgets 函數(shù)則保留換行字符。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案應(yīng)用:仿真unix的grep指令ngrep :用來找出包含某一特定字符串的一列function grep(filename, pattern)fid = fopen(filename, r);lin
18、e_number = 0;while feof(fid) = 0,line = fgetl(fid);matched = findstr(line, pattern);if isempty (matched)fprintf(%d: %s n, line_number,line);endline_number = line_number + 1;endfclose(fid);MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案resultn如欲列出 grep.m 中包含 matched 字符串的每一列,可輸入如下: grep(grep.m, matched)6: matched = findstr(line,
19、 pattern);7: if isempty (matched)n若要進(jìn)行更復(fù)雜的字符串比對(duì)n例如要在一個(gè)檔案中找出b 和 d 中間夾1至3個(gè)元音的英文字n請(qǐng)參考本書姊妹作MATLAB 程序設(shè)計(jì):進(jìn)階篇中的第四章通用表達(dá)式。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案fscanfn函數(shù)fscanf可對(duì)ascii檔案作更精確的讀取,用法如下:nmatrix = fscanf(fid, format)n其中 fid 是欲讀取之檔案的辨識(shí)碼nformat 是格式指定字符串(Format Specifier)n常用的格式指定字符串有下列幾種:n%s:字符串n%d:10進(jìn)位的整數(shù)n%g:雙倍精準(zhǔn)(Doubl
20、e-precision)的浮點(diǎn)數(shù)(Floating-point Numbers)n其它各種格式指定字符串可輸入 help fscanf 來得到詳細(xì)的說明MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Ex:fscanf01.mn有一文字文件 test.txt 如下:1 4 9 16 2536 49 64 81 100n欲使用 fscanf 指令讀取其內(nèi)容,可輸入如下:nfid = fopen(test.txt, r);nmyData = fscanf(fid, %g);nfclose(fid);nmyData% 顯示 myDataMATLAB 程式設(shè)計(jì)入門篇:讀寫檔案resultmyData =1491
21、62536496481100n上例顯示了 MATLAB 的 fscanf 指令和 C 的 fscanf 指令的最大不同:nMATLAB 的 fscanf 指令是向量化的(Vectorized)n只要讀入數(shù)據(jù)的型態(tài)正確,MATLAB 的 fscanf 指令會(huì)一再執(zhí)行n同時(shí)把所得結(jié)果存放于一個(gè)向量并回傳。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案sscanfnsscanf 函數(shù)和 fscanf 的功能很類似nsscanf 函數(shù)從字符串(Strings)中讀取數(shù)據(jù)nex:sscanf.mstr = num2str(pi, sqrt(2), log10(3)%建立一字符串strretrieved = ss
22、canf(str, %g)%擷取str中的doublestr =3.1416 1.4142 0.47712retrieved =3.14161.41420.4771MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案寫入 ASCII 檔案nfprintf 函數(shù)可將數(shù)據(jù)依格式指定字符串來寫入 ASCII 檔案,其使用語法如下:nfprintf(fid, format, y)n其中 fid 是欲寫入之檔案的辨識(shí)碼nformat 是格式指定字符串,用以指定數(shù)據(jù)寫至檔案的格式ny 是 MATLAB 的數(shù)據(jù)變量n常用的格式指定字符串有下列幾種:n%e:科學(xué)記號(hào),即將數(shù)值表示成 a10b 的形式n%f:固定欄寬(含整數(shù)
23、與小數(shù)部份)的表示法n%g:自動(dòng)選取 %e 或 %fn其它各種格式指定字符串可輸入 help fprintf 來得到詳細(xì)的在線說明。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案應(yīng)用:將平方根表寫入檔案nEx:fprintf01.mx = 1:10;y = x; sqrt(x);fid = fopen(squareRootTable.txt, w);fprintf(fid, Table of square root:rn);fprintf(fid, %2.0f = %10.6frn, y);fclose(fid);dos(start squareRootTable.txt);% 開啟 squareRo
24、otTable.txtMATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Resultn在上例中n%2.0f 印出的總欄寬為 2,且不帶小數(shù)n%10.6f 印出的總欄寬為 10,包含 6位的小數(shù)n請(qǐng)自行試驗(yàn)后開啟 squareRootTable.txt 來驗(yàn)證MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案sprintfnsprintf 函數(shù)和 fprintf 函數(shù)的功能很類似nsprintf 將數(shù)據(jù)以字符串形式傳回nEx: str = sprintf(log(%f) = %en, 2, log(2)str =log(2.000000) = 6.931472e-001MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案暫存目錄n在
25、某些應(yīng)用上,可能需要用到暫存目錄及臨時(shí)文件。n欲取用系統(tǒng)的暫存目錄,可用 tempdir如下: directory = tempdirnResult:directory =C:DOCUME1jangLOCALS1TempMATLAB 程式設(shè)計(jì)入門篇:讀寫檔案臨時(shí)文件n欲開啟一臨時(shí)文件,可用 tempname,如下: filename = tempnamenResult:filename =C:DOCUME1jangLOCALS1Temptp273132MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Tipsn不同系統(tǒng)下tempdir 和 tempname會(huì)依操作系統(tǒng)的環(huán)境變量而產(chǎn)生不同的回傳字符串n例如
26、在 Windows 98 操作系統(tǒng)下ntempdir 傳回的字符串可能是nC:windowstempntempname 傳回的字符串可能是nC:WINDOWSTEMPtp512124。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案應(yīng)用:產(chǎn)生暫存的 HTML 檔案n以下利用 tempname 產(chǎn)生一個(gè)暫存的 HTML 檔案,然后再將此檔案顯示在瀏覽器。nEx: writeHTML.mfilename = tempname, .html;fid = fopen(filename, w);fprintf(fid, n);fprintf(fid, This is a test homepage written
27、 by MATLAB!n);fprintf(fid, );fclose(fid);dos(start , filename);% 啟動(dòng)和 .html 相連結(jié)的應(yīng)用程序MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Resultn上例產(chǎn)生之網(wǎng)頁如下:n當(dāng)MATLAB 的計(jì)算結(jié)果可用列表(Table)或多媒體檔案(如影像、聲音、動(dòng)畫等)來呈現(xiàn)時(shí),由網(wǎng)頁來顯示這些結(jié)果是不錯(cuò)的選擇。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案網(wǎng)絡(luò)檔案的讀取MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案urlreadn上例中使用 urlread 指令來讀取筆者在清華大學(xué)信息系的首頁n同時(shí)disp(); 將結(jié)果指定到字符串變量 contents
28、nEx: urlread01.mMATLAB 程式設(shè)計(jì)入門篇:讀寫檔案ResultThe link you just clicked is obsolete.You are being transported automatically to Roger Jangs current homepage at.tw/jang.MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案urlwritenurlwrite可以直接在讀取網(wǎng)頁后,就儲(chǔ)存到本機(jī)硬盤中nEx:urlread02.mMATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Urlwrite(cont)MATLAB 程式設(shè)
29、計(jì)入門篇:讀寫檔案sendmailnSendmail 指令的用法:nsendmail(TO, SUBJECT, MESSAGE, ATTACHMENTS)nTO:收件者n若是只有一位收件者,可用字符串表示n若是有多位收件者,可以使用字符串異質(zhì)數(shù)組來表示。nSUBJECT:主題,以字符串表示。nMESSAGE:電子郵件的內(nèi)容,以字符串表示。nATTACHMENTS:附加檔案,用異質(zhì)數(shù)組來表示。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Ex:sendmail01.mn請(qǐng)將 to 的內(nèi)容改為你自己本身的電子郵件,并試著執(zhí)行一次,以確認(rèn)此程序代碼的正確性。to = email1aaa.bbb.ccc, e
30、mail2aaa.bbb.ccc;subject = Test email from a MATLAB program;message = This is a test email sent via sendmail.;attachment = c:windowsmatlab.ini;sendmail(to, subject, message, attachment);MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Tipsn根據(jù)筆者在 MATLAB 6.5 的測(cè)試,sendmail 目前還不支持中文。n以上范例純粹以 MATLAB 6.5 為主n而 MATLAB 7.0 對(duì) sendmail 新增了一
31、些新功能n請(qǐng)輸入 help sendmail 來獲取最新的在線支持。n若要在郵件內(nèi)容加入換列,可以使用 ASCII 碼10n例如:message=Sir:, 10, This is a test。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案讀取二進(jìn)制數(shù)據(jù)n用fread 函數(shù)可從檔案中讀取二進(jìn)制數(shù)據(jù)nfread會(huì)將每一個(gè)字節(jié)看成一個(gè)整數(shù),并將結(jié)果以一矩陣傳回。n例如,檔案 test2.txt 的內(nèi)容如下:This is a test!MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Ex:fread01.mnResult:This is a test!nchar 可將 myData 的整數(shù)轉(zhuǎn)成 ASCII 字符n
32、取 myData 的轉(zhuǎn)制是為了使印出的效果易于閱讀fid = fopen(test2.txt, r);myData = fread(fid);char(myData)% 驗(yàn)證所讀入的數(shù)據(jù)是否正確fclose(fid);MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Ex:fread02.mnfread 函數(shù)可用第二個(gè)輸入自變量來控制傳回矩陣的大小fid = fopen(test2.txt, r);myData = fread(fid, 4)% 只讀 4 個(gè)字節(jié)fclose(fid);myData =84104105115MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Ex:fread03.mnResult:myD
33、ata = 84 105 32 104 115 105n此時(shí) myData 為 2X3 的矩陣。np.s.上例中為長(zhǎng)度4的向量fid = fopen(test2.txt, r);myData = fread(fid, 2 3)fclose(fid);MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Fread的第3個(gè)自變量n控制 fread 在將二進(jìn)制數(shù)據(jù)轉(zhuǎn)成 MATLAB 矩陣時(shí)所用的精確度n包含:n一次讀取的位數(shù)(Number of Bits)n這些位數(shù)所代表的數(shù)據(jù)型態(tài)n常用的精準(zhǔn)度有下列幾種:char:帶符號(hào)的字符(8 bits)uchar:不帶符號(hào)的字符(8 bits)short:短整數(shù)(16 b
34、its)int:整數(shù)(通常是 32 bits)long:長(zhǎng)整數(shù)(32 或 64 bits)ushort:不帶符號(hào)的短整數(shù)(16 bits)uint:不帶符號(hào)的整數(shù)(32 bits)ulong:不帶符號(hào)的長(zhǎng)整數(shù)(32 或 64 bits)float:?jiǎn)尉珳?zhǔn)浮點(diǎn)數(shù)(32 bits)double:雙精準(zhǔn)浮點(diǎn)數(shù)(64 bits)MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案Ex:fread04.mnResult:myData = 26708myData2 = 26708fid = fopen(test2.txt, r);myData = fread(fid, 1, short)fclose(fid);myDa
35、ta2 = bin2dec(dec2bin(abs(h),8), dec2bin(abs(T),8)MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案說明:fread04.mn上例將 text2.txt 以短整數(shù)的方式讀入n也就是以 16 bit 為一個(gè)單位來轉(zhuǎn)換成整數(shù)1.讀出來的第一個(gè)數(shù)字,會(huì)等于將 h 和 T 轉(zhuǎn)換成 8 bit,再并排成 16 bits2.然后再轉(zhuǎn)換成十進(jìn)制的整數(shù)值n要注意的是:n雖然原檔案的前兩個(gè)字節(jié)是 T 和 h,但是在以 16 bits 為一個(gè)單位時(shí)nT 會(huì)是 LSB(Least Significant Bits)n而 h 則是 MSB(Most Significant Bit
36、s)n因此我們?cè)僦亟M成 16 bits 時(shí),h 會(huì)在前而 T 會(huì)在后。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案寫入二進(jìn)制檔案nfwrite 函數(shù):n矩陣 - 二進(jìn)制格式 - 寫入檔案n傳回成功寫入的個(gè)數(shù)。n以下用fwrite 產(chǎn)生一大小為 40 bytes 的二進(jìn)制檔案n在使用 type 指令來顯示檔案內(nèi)容時(shí),看不到其內(nèi)容n因?yàn)槭?binary 檔案n如果 count 的值小于 10,就表示 fread 的運(yùn)算有誤nEx: fwrite01.mfid = fopen(test.bin, w);count = fwrite(fid, randperm(10), int32);fclose(fid)
37、;type test.binMATLAB 程式設(shè)計(jì)入門篇:讀寫檔案控制檔案位置指針n檔案位置指針:n決定下一次進(jìn)行數(shù)據(jù)讀取或?qū)懭氲奈恢?。n控制此指針的函數(shù)如下:nfeof測(cè)試指針是否在檔案結(jié)束位置nfseek設(shè)定指針位置nftell取得指針位置nfrewind重設(shè)指針至檔案起始位置MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案foefn測(cè)試指針是否在檔案結(jié)束位置nEx:feof01.mfid = fopen(test.txt);A = fscanf(fid, %g, 3 4)feof(fid)n在上例中,feof(fid) 傳回 1,表示檔案指針已經(jīng)在檔案結(jié)束位置n因?yàn)?test.txt 只包含 10 個(gè)數(shù)目字。MATLAB 程式設(shè)計(jì)入門篇:讀寫檔案resultA =1 16 49 1004 25 6
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2 臘八粥 說課稿-2024-2025學(xué)年統(tǒng)編版語文六年級(jí)下冊(cè)001
- 2024年五年級(jí)數(shù)學(xué)上冊(cè) 3 小數(shù)除法7課時(shí) 循環(huán)小數(shù)配套說課稿 新人教版
- 2025工礦產(chǎn)品買賣合同
- 2025同村土地承包合同
- 2025學(xué)校食品供貨合同簡(jiǎn)單版樣本
- 2025版集體勞動(dòng)合同范文
- 2025加盟經(jīng)銷合同范文
- 6-2《插秧歌》說課稿及反思 2024-2025學(xué)年統(tǒng)編版高中語文必修上冊(cè)
- 2023九年級(jí)數(shù)學(xué)上冊(cè) 第2章 一元二次方程2.2 一元二次方程的解法2.2.3 因式分解法第2課時(shí) 選擇合適的方法解一元二次方程說課稿 (新版)湘教版
- 軟膜天花施工方案
- 電網(wǎng)調(diào)度基本知識(shí)課件
- 環(huán)境與職業(yè)健康安全管理手冊(cè)
- 甲狀腺乳腺外科ERAS實(shí)施流程(模板)
- 2025屆高考語文復(fù)習(xí):小說人物+課件
- 村委會(huì)2025年工作總結(jié)及2025年工作計(jì)劃
- GB/T 19411-2024除濕機(jī)
- 欠薪證明協(xié)議書(2篇)
- 注射泵操作使用課件
- 自愿參加活動(dòng)免責(zé)申明
- 2024年全國(guó)新高考1卷(新課標(biāo)Ⅰ)數(shù)學(xué)試卷(含答案詳解)
- 人教版高中生物學(xué)新舊教材知識(shí)差異盤點(diǎn)
評(píng)論
0/150
提交評(píng)論