版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1MATLAB 程式設(shè)計入門篇檔案讀寫張智星 (Roger Jang)清大資工系 多媒體檢索實驗室MATLAB 程式設(shè)計入門篇:讀寫檔案2本章重點n很多計算工作的第一步就要是讀取資料nMATLAB 內(nèi)建許多有關(guān)檔案讀寫的函數(shù),可對二進(jìn)制檔案或 ASCII 檔案進(jìn)行下列處理:n開啟n關(guān)閉n儲存MATLAB 程式設(shè)計入門篇:讀寫檔案3高階的檔案讀寫指令(1/2)n先列出常用讀寫檔案指令,稍後將介紹用法類別支援檔案格式指令 一般資料MAT - MATLAB workspaceload, saveCSV - Comma separated numberscsvread, csvwriteDAT - F
2、ormatted textImportdataDLM - Delimited textdlmread, dlmwriteTAB - Tab separated text試算表XLS - Excel worksheetXlsreadWK1 - Lotus 123 worksheetwk1read, wk1writeMATLAB 程式設(shè)計入門篇:讀寫檔案4高階的檔案讀寫指令(2/2)類別支援檔案格式指令 科學(xué)資料CDF - Common Data FormatFITS - Flexiblecdfread, cdfwriteImage Transport SystemFitsreadHDF - Hi
3、erarchical Data Formathdfread, hdfwrite電影AVI - Movieaviread影像TIFF, 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è)計入門篇:讀寫檔案5csvreadn使用 csvread 指令來讀取n條件:n資料檔案是由逗號分開n只有包含數(shù)值資料nE
4、x:csvread01.mfprintf(data.csv 的內(nèi)容:n);type data.csv% 列出 data.csv 的內(nèi)容A = csvread(data.csv) % 將 data.csv 的內(nèi)容讀到矩陣 AMATLAB 程式設(shè)計入門篇:讀寫檔案6執(zhí)行結(jié)果data.csv 的內(nèi)容:1, 2, 34, 56, 7, 8, 9A =1 2 3 04 5 0 06 7 8 9ncsvread 會傳回一個數(shù)值矩陣n其中缺席的資料將以 0 填入。MATLAB 程式設(shè)計入門篇:讀寫檔案7dlmreadn如果數(shù)值資料的分界符號(Delimiters)不是逗點,就不能使用 csvread 指令,
5、而要改用 dlmread 指令nEx:dlmread01.mfprintf(data.dlm 的內(nèi)容:n);type data.dlm% 列出 data.dlm 的內(nèi)容A = dlmread(data.dlm, t)% 將 data.dlm 的內(nèi)容讀到矩陣 A,資料是以定位鍵隔開, MATLAB 程式設(shè)計入門篇:讀寫檔案8執(zhí)行結(jié)果data.dlm 的內(nèi)容:123456789A =1 2 3 04 5 0 06 7 8 9n上例中data.dlm 的資料是以定位鍵(Tab)隔開,因此 dlmread 指令的第二個引數(shù)是 t,以代表定位鍵MATLAB 程式設(shè)計入門篇:讀寫檔案9textreadn如
6、果檔案資料包含數(shù)值及字串,我們就必須改用 textread 指令nEx:textread01.mfprintf(data.txt 的內(nèi)容:n);type data.txt% 列出 data.txt 的內(nèi)容name, hobby, age = textread(data.txt, %s%s%d)MATLAB 程式設(shè)計入門篇:讀寫檔案10執(zhí)行結(jié)果data.txt 的內(nèi)容:Timmy OnlineGames 13Annie Chatrooms 10Roger Tennis 41name = Timmy Annie Rogerhobby = OnlineGames Chatrooms Tennisag
7、e = 13 10 41在上述範(fàn)例中,data.txt 包含三個欄位(或是三直行的資料)ntextread 可在第二個引數(shù)指定資料型態(tài)n例如上例中 %s 代表字串,%d 代表整數(shù)n也同時將讀入的資料設(shè)定到不同的輸出引數(shù)n由於資料型態(tài)的不同,輸出引數(shù)也有不同的型態(tài)n以上述範(fàn)例來說,name 和 hobby 都是字串異值陣列,而 age 則是數(shù)值陣列。MATLAB 程式設(shè)計入門篇:讀寫檔案11使用定位鍵來分隔欄位n上例中,我們利用空格來分隔欄位n如果欄位值本身也有空格 ?n一般常見的作法,是使用定位鍵來分隔欄位nEx:textread02.mfprintf(data2.txt 的內(nèi)容:n);typ
8、e data2.txt% 列出 data2.txt 的內(nèi)容name, hobby, age = textread(data2.txt, %s%s%d, delimiter, t)MATLAB 程式設(shè)計入門篇:讀寫檔案12執(zhí)行結(jié)果n結(jié)果與前一例相同ntextread 指令中加上對分界字元(Delimiters)的定義,就可以讀出由定位鍵所分隔的資料檔案n若不指定時,預(yù)設(shè)為空白鍵MATLAB 程式設(shè)計入門篇:讀寫檔案13讀取文字檔ntextread 也可以讀取一個文字檔,同時把檔案內(nèi)的每一列文字變成字串異質(zhì)陣列裡面的每一個元素nEx:textread03.mContents = textread(
9、textread03.m,%s,delimiter,n,whitespace,);class(contents)% 印出 contents 的資料類別contents1% 列出 contents 第一列contents2% 列出 contents 第二列MATLAB 程式設(shè)計入門篇:讀寫檔案14執(zhí)行結(jié)果ans =cellans =contents=textread(textread03.m,%s,delimiter,n,whitespace,);ans =class(contents)% 印出 contents 的資料類別n上例使用 textread 讀入 textread03.m(也就是此範(fàn)
10、例檔案),並顯示此檔案的第一列和第二列。ntextread 指令的用法還有很多,功能也很強(qiáng)大n在MATLAB下輸入help textread,可以得到完整的技術(shù)支援。MATLAB 程式設(shè)計入門篇:讀寫檔案15n若只是要簡單地將一個檔案的內(nèi)容送到一個字串,可以使用 指令nEx:範(fàn)例16-6:out = (data2.txt);class(out)size(out)MATLAB 程式設(shè)計入門篇:讀寫檔案16執(zhí)行結(jié)果ans =charans =1 64n上例中, 指令會將檔案 data2.txt 的內(nèi)容送到字串變數(shù) outnclass(out) 的值是 char ,顯示 out 的資料型態(tài)是字串ns
11、ize(out) 顯示字串 out 的長度是 64。MATLAB 程式設(shè)計入門篇:讀寫檔案17影像與音訊檔案n有關(guān)於影像檔案的讀寫,請參閱本書第十九章影像顯示與讀寫;n有關(guān)音訊檔案的讀寫,請參閱本書第二十章音訊讀寫、錄製與播放。MATLAB 程式設(shè)計入門篇:讀寫檔案18更繁複的文字檔案格式n一般情況下n盡量採取先前介紹的內(nèi)建指令來進(jìn)行讀寫,效率才會高。n資料格式比較繁複時n需要一列一列讀進(jìn)來,再進(jìn)行剖析(Parsing)n相關(guān)指令將在以下介紹。MATLAB 程式設(shè)計入門篇:讀寫檔案19開啟檔案n無論讀寫 ASCII 或二進(jìn)制檔案,都必需先用 fopen 函數(shù)來開啟檔案,語法如:nfid = f
12、open(, permission)n其中 表示欲讀寫的檔案名稱npermission 則表示欲對檔案進(jìn)行的處理方式,可以是下列任一字串:nlr:只準(zhǔn)讀?。╮eading)檔案nlw:只準(zhǔn)寫入(writing)檔案nla:只準(zhǔn)加入(appending)檔案nla+:可讀取及加入檔案(reading and appending)n省略第二個引數(shù),permission 的預(yù)設(shè)值就是 r。MATLAB 程式設(shè)計入門篇:讀寫檔案20有關(guān)fopenn在windows下,permission 字串必需能夠分辨binary或 ASCII 檔案。n例如:若要讀binary檔案,則 permission 字串必
13、需是“rb” nfopen 另外支援很多 permission 字串,可輸入 help fopen 得到完整的資訊。nfopen 函數(shù)傳回一個檔案辨識碼(通常是個大於2的整數(shù)),我們可用此辨識碼來對此檔案進(jìn)行各種讀寫的處理。MATLAB 程式設(shè)計入門篇:讀寫檔案21Ex:fopen01.mn上例可知當(dāng)檔案不存在時,回傳的 fid 是 1n同時 message 會包含相關(guān)的錯誤資訊。fid, message = fopen(no_such_file, r);fprintf(fid = %dn, fid); fprintf(message = %sn, message);fid = -1messa
14、ge = Sorry. No help in figuring out the problem . . .MATLAB 程式設(shè)計入門篇:讀寫檔案22Ex:fopen02.mn若開啟成功,則傳回的 fid 是一個大於 2 的整數(shù),而且傳回的 message 是一個空字串,例如:fid, message = fopen(fopen02.m, r);fprintf(fid = %dn, fid);fprintf(message = %sn, message);fid = 3message =MATLAB 程式設(shè)計入門篇:讀寫檔案23提示n為了安全起見,最好在每次使用 fopen 時,都測試其傳回的
15、fid 是否為有效值。n輸出位置nMATLAB 使用 fid=1 來代表標(biāo)準(zhǔn)輸出(Standard Output)nfid=2 代表標(biāo)準(zhǔn)錯誤輸出(Standard Error)n若使用fid=1或2時,可不使用 fopen 來開啟檔案nTry this to see their difference:nfprintf(1, This is standard output!n);nfprintf(2, This is standard error!n);MATLAB 程式設(shè)計入門篇:讀寫檔案24關(guān)閉檔案n完成檔案的讀寫之後,記得要使用 fclose 函數(shù)來關(guān)閉檔案,用法如下:nstatus =
16、fclose(fid);n若一切順利,fclose 傳回 0。n若無法順利關(guān)閉檔案,則 fclose 傳回 -1。n為避免因開啟檔案過多而造成系統(tǒng)資源浪費(fèi),一般在完成檔案的讀寫後,即應(yīng)使用 fclose 來關(guān)閉檔案MATLAB 程式設(shè)計入門篇:讀寫檔案25提示n若要一次關(guān)閉所有開啟的檔案,可用 fclose(all) 或是 fclose all。n開啟及關(guān)閉檔案都是比較耗時的函數(shù),因此盡量不要將他們置於迴圈之中,以提高程式執(zhí)行效率。MATLAB 程式設(shè)計入門篇:讀寫檔案26讀取 ASCII 檔案(1/2)nfgetl 函數(shù):n可將 ASCII 檔案的內(nèi)容中的某一列讀出n並將該列的 ASCII
17、內(nèi)容以轉(zhuǎn)成字串傳回。nEx:fgetl01.mfid = fopen(mean.m, r);while feof(fid)=0% feof 測試檔案指標(biāo)是否已到達(dá)結(jié)束位置line = fgetl(fid);disp(line);endMATLAB 程式設(shè)計入門篇:讀寫檔案27讀取 ASCII 檔案(2/2)n執(zhí)行上述程式後,MATLAB 會n先在目前目錄找尋 mean.mn若找不到,再根據(jù)搜尋路徑,找出 mean.m 指令的位置然後再將其內(nèi)容一列一列地列出。n輸入which mean可顯示檔案所在的路徑nfgets 和 fgetl 均可由檔案讀取一列資料:nfgetl 會取得一列,但不包含換列
18、字元nfgets 則保留換列字元MATLAB 程式設(shè)計入門篇:讀寫檔案28應(yīng)用:模擬unix的grep指令ngrep :用來找出包含某一特定字串的一列function grep(, pattern)fid = fopen(, r);line_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;endfclos
19、e(fid); MATLAB 程式設(shè)計入門篇:讀寫檔案29執(zhí)行結(jié)果n如欲列出 grep.m 中包含 matched 字串的每一列,可輸入如下: grep(grep.m, matched) 6: matched = findstr(line, pattern); 7: if isempty (matched)n若要進(jìn)行更複雜的字串比對,請參考本書姊妹作MATLAB 程式設(shè)計:進(jìn)階篇中的第四章通用運(yùn)算式。n例如要在一個檔案中找出b 和 d 中間夾1至3個母音的英文字MATLAB 程式設(shè)計入門篇:讀寫檔案30fscanfn函數(shù)fscanf可對ascii檔案作更精確的讀取,用法如下:nmatrix =
20、 fscanf(fid, format)n其中 fid 是欲讀取之檔案的辨識碼nformat 是格式指定字串(Format Specifier)n常用的格式指定字串有下列幾種:n%s:字串n%d:10進(jìn)位的整數(shù)n%g:雙倍精準(zhǔn)(Double-precision)的浮點數(shù)n其他各種格式指定字串可輸入 help fscanf 來得到詳細(xì)的說明MATLAB 程式設(shè)計入門篇:讀寫檔案31Ex:fscanf01.mn有一文字檔 test.txt 如下:1 4 9 16 2536 49 64 81 100 n欲使用 fscanf 指令讀取其內(nèi)容,可輸入如下:nfid = fopen(test.txt, r
21、);nmyData = fscanf(fid, %g);nfclose(fid);nmyData% 顯示 myDataMATLAB 程式設(shè)計入門篇:讀寫檔案32執(zhí)行結(jié)果myData = 1 4 9 16 25 36 49 64 81 100n上例顯示了 MATLAB 的 fscanf 指令和 C 的 fscanf 指令的最大不同:nMATLAB 的 fscanf 指令是向量化的(Vectorized)n只要讀入資料的型態(tài)正確,MATLAB 的 fscanf 指令會一再執(zhí)行n同時把所得結(jié)果存放於一個向量並回傳。MATLAB 程式設(shè)計入門篇:讀寫檔案33sscanfnsscanf 函數(shù)和 fsca
22、nf 的功能很類似nsscanf 函數(shù)從字串(Strings)中讀取資料nex:sscanf01.mstr = num2str(pi, sqrt(2), log10(3)%建立一字串strretrieved = sscanf(str, %g)%擷取str中的doublestr =3.1416 1.4142 0.47712retrieved = 3.1416 1.4142 0.4771MATLAB 程式設(shè)計入門篇:讀寫檔案34寫入 ASCII 檔案nfprintf 函數(shù)可將資料依格式指定字串來寫入 ASCII 檔案,其使用語法如下:nfprintf(fid, format, y)n其中 fid
23、是欲寫入之檔案的辨識碼nformat 是格式指定字串,用以指定資料寫至檔案的格式ny 是 MATLAB 的資料變數(shù)n常用的格式指定字串有下列幾種:n%e:科學(xué)記號,即將數(shù)值表示成 a10b 的形式n%f:固定欄寬(含整數(shù)與小數(shù)部份)的表示法n%g:自動選取 %e 或 %fn其他各種格式指定字串可輸入 help fprintf 來得到詳細(xì)的線上說明。MATLAB 程式設(shè)計入門篇:讀寫檔案35應(yīng)用:將平方根表寫入檔案nEx:fprintf01.mx = 1:10;y = x; sqrt(x);fid = fopen(squareRootTable.txt, w);fprintf(fid, Tabl
24、e of square root:rn);fprintf(fid, %2.0f = %10.6frn, y);fclose(fid);dos(start squareRootTable.txt);% 開啟 squareRootTable.txtMATLAB 程式設(shè)計入門篇:讀寫檔案36執(zhí)行結(jié)果n在上例中n%2.0f 印出的總欄寬為 2,且不帶小數(shù)n%10.6f 印出的總欄寬為 10,包含 6位的小數(shù)n請自行試驗後開啟 squareRootTable.txt 來驗證squareRootTable.txtMATLAB 程式設(shè)計入門篇:讀寫檔案37sprintf nsprintf 函數(shù)和 fprin
25、tf 函數(shù)的功能很類似nsprintf 將資料以字串形式傳回nEx: str = sprintf(log(%f) = %en, 2, log(2)str =log(2.000000) = 6.931472e-001MATLAB 程式設(shè)計入門篇:讀寫檔案38暫存目錄n某些應(yīng)用需要用到暫存目錄及暫存檔案。(例如:產(chǎn)生一個html檔案,再使用瀏覽器開啟。)n欲取用系統(tǒng)的暫存目錄,可用 tempdir如下: directory = tempdirnResult:directory =C:UsersjangAppDataLocalTempMATLAB 程式設(shè)計入門篇:讀寫檔案39暫存檔案n欲開啟一暫存檔
26、案,可用 tempname,如下: = tempnamenResult: =C:UsersjangAppDataLocalTemptpda998b2b_cb6f_4b68_9814_6dbab1d44abdMATLAB 程式設(shè)計入門篇:讀寫檔案40提示n上述範(fàn)例是在 Windows 7 進(jìn)行測試n不同系統(tǒng)下tempdir 和 tempname會依作業(yè)系統(tǒng)的環(huán)境變數(shù)而產(chǎn)生不同的回傳字串n若是在 Windows 98 作業(yè)系統(tǒng)下ntempdir 傳回的字串可能是 nC:windowstempn tempname 傳回的字串可能是n C:WINDOWSTEMPtp512124。MATLAB 程式設(shè)計
27、入門篇:讀寫檔案41應(yīng)用:產(chǎn)生暫存的 HTML 檔案n以下利用 tempname 產(chǎn)生一個暫存的 HTML 檔案,然後再將此檔案顯示在瀏覽器。nEx: writeHTML.m = tempname, .html;fid = fopen(, w);fprintf(fid, n);fprintf(fid, This is a test homepage written by MATLAB!n);fprintf(fid, );fclose(fid);dos(start , );% 啟動和 .html 相連結(jié)的應(yīng)用程式MATLAB 程式設(shè)計入門篇:讀寫檔案42執(zhí)行結(jié)果n上例產(chǎn)生之網(wǎng)頁如下:n當(dāng)MATL
28、AB 的計算結(jié)果可用列表(Table)或多媒體檔案(如影像、聲音、動畫等)來呈現(xiàn)時,由網(wǎng)頁來顯示這些結(jié)果是不錯的選擇。MATLAB 程式設(shè)計入門篇:讀寫檔案43網(wǎng)路檔案的讀取nMATLAB 也可以直接讀取網(wǎng)路上的檔案n通常我們是採用 URL(Universal Resource Locator)的方式來指定這些網(wǎng)路上的檔案:n一般網(wǎng)頁:nFTPn本機(jī)硬碟檔案:n:winntmatlab.iniMATLAB 程式設(shè)計入門篇:讀寫檔案44urlread n上例中使用 urlread 指令來讀取筆者在清華大學(xué)資訊系的首頁,同時將結(jié)果指定到字串變數(shù) contentsnEx: urlread01.mco
29、ntents = urlread(); disp(contents);MATLAB 程式設(shè)計入門篇:讀寫檔案45執(zhí)行結(jié)果The link you just clicked is obsolete.You are being transported automatically to Roger Jangs current homepage at .MATLAB 程式設(shè)計入門篇:讀寫檔案46urlwrite 指令(1/2) n urlwrite指令可以直接在讀取網(wǎng)頁後,就儲存到本機(jī)硬碟中nEx:urlread02.mtempFile = tempname, .html;% 指定暫存檔案urlwri
30、te(, tempFile);% 將網(wǎng)頁內(nèi)容寫到檔案dos(start , tempFile);% 開啟此檔案MATLAB 程式設(shè)計入門篇:讀寫檔案47urlwrite 指令(2/2)n在上例中,我們將 的網(wǎng)頁內(nèi)容寫到一個暫存檔案,然後再使用瀏覽器開啟此檔案。n另一個和網(wǎng)路相關(guān)的功能 sendmailn可用來寄發(fā)電子郵件n雖然這個功能和檔案讀寫沒有直接關(guān)係,但也在此一併說明。MATLAB 程式設(shè)計入門篇:讀寫檔案48sendmail 指令nsendmail 指令的用法:nsendmail(to, subject, message, attachment)nto:收件者n若是只有一位收件者,可用
31、字串表示n若是有多位收件者,可以使用字串異質(zhì)陣列來表示。nsubject:主題,以字串表示。nmessage:電子郵件的內(nèi)容,以字串表示。nattachment:附加檔案,用異質(zhì)陣列來表示。MATLAB 程式設(shè)計入門篇:讀寫檔案49Ex:sendmail01.mn請將 to 的內(nèi)容改為你自己本身的電子郵件,並試著執(zhí)行一次,以確認(rèn)此程式碼的正確性。to = , ;subject = Test email from a MATLAB program;message = This is a test email sent via sendmail.;attachment = c:windowsmat
32、lab.ini;sendmail(to, subject, message, attachment);MATLAB 程式設(shè)計入門篇:讀寫檔案50提示n可能還需要先使用setpref來設(shè)定smtp server及發(fā)信人等。(MATLAB 會有提示文字。)n以上範(fàn)例純粹以 MATLAB 6.5 為主n根據(jù)筆者在 MATLAB 6.5 的測試,sendmail 目前還不支援中文。n而 MATLAB 7.0 對 sendmail 新增了一些新功能,請輸入 help sendmail 來獲取最新的線上支援。n若要在郵件內(nèi)容加入換列,可以使用 ASCII 碼10n例如:message=Sir:, 10,
33、This is a test。MATLAB 程式設(shè)計入門篇:讀寫檔案51讀取二進(jìn)制資料n用fread 函數(shù)可從檔案中讀取二進(jìn)制資料nfread會將每一個位元組看成一個整數(shù),並將結(jié)果以一矩陣傳回。n例如,檔案 test2.txt 的內(nèi)容如下:This is a test!MATLAB 程式設(shè)計入門篇:讀寫檔案52Ex:fread01.mnResult:This is a test!nchar 可將 myData 的整數(shù)轉(zhuǎn)成 ASCII 字元n取 myData 的轉(zhuǎn)置是為了印出橫列,易於閱讀fid = fopen(test2.txt, r);myData = fread(fid);char(myD
34、ata)% 驗證所讀入的資料是否正確fclose(fid);MATLAB 程式設(shè)計入門篇:讀寫檔案53Ex:fread02.mnfread 函數(shù)可用第二個輸入引數(shù)來控制傳回矩陣的大小fid = fopen(test2.txt, r);myData = fread(fid, 4)% 只讀 4 個位元組fclose(fid);myData = 84 104 105 115MATLAB 程式設(shè)計入門篇:讀寫檔案54Ex:fread03.mnResult:myData = 84 105 32 104 115 105n此時 myData 為 2X3 的矩陣。fid = fopen(test2.txt,
35、r);myData = fread(fid, 2 3)fclose(fid);MATLAB 程式設(shè)計入門篇:讀寫檔案55Fread的第3個引數(shù)n控制 fread 在將二進(jìn)制資料轉(zhuǎn)成 MATLAB 矩陣時所用的精確度n包含:n一次讀取的位元數(shù)(Number of Bits)n這些位元數(shù)所代表的資料型態(tài)n常用的精準(zhǔn)度有下列幾種:char:帶符號的字元(8 bits)uchar:不帶符號的字元(8 bits)short:短整數(shù)(16 bits)int:整數(shù)(通常是 32 bits)long:長整數(shù)(32 或 64 bits)ushort:不帶符號的短整數(shù)(16 bits)uint:不帶符號的整數(shù)(3
36、2 bits)ulong:不帶符號的長整數(shù)(32 或 64 bits)float:單精準(zhǔn)浮點數(shù)(32 bits)double:雙精準(zhǔn)浮點數(shù)(64 bits)MATLAB 程式設(shè)計入門篇:讀寫檔案56Ex:fread04.mnResult:myData = 26708myData2 = 26708fid = fopen(test2.txt, r);myData = fread(fid, 1, short)fclose(fid);myData2 = bin2dec(dec2bin(abs(h),8), dec2bin(abs(T),8)MATLAB 程式設(shè)計入門篇:讀寫檔案57說明:fread04
37、.mn上例將 text2.txt 以短整數(shù)的方式讀入n也就是以 16 bit 為一個單位來轉(zhuǎn)換成整數(shù)n讀出來的第一個數(shù)字,會等於將 h 和 T 轉(zhuǎn)換成 8 bit,再並排成 16 bitsn然後再轉(zhuǎn)換成十進(jìn)位的整數(shù)值n要注意的是:n雖然原檔案的前兩個位元組是 T 和 h,但是在以 16 bits 為一個單位時nT 會是 LSB(Least Significant Bits)n而 h 則是 MSB(Most Significant Bits)1.因此我們再重組成 16 bits 時,h 會在前而 T 會在後 The byte order is Little Endian!MATLAB 程式設(shè)計入
38、門篇:讀寫檔案58寫入二進(jìn)制檔案nfwrite 函數(shù):n矩陣 - 二進(jìn)制格式 - 寫入檔案n傳回成功寫入的個數(shù)。n以下用fwrite 產(chǎn)生一大小為 40 bytes 的二進(jìn)制檔案n在使用 type 指令來顯示檔案內(nèi)容時,看不到其內(nèi)容n因為是 binary 檔案n如果 count 的值小於 10,就表示 fread 的運(yùn)算有誤nEx: fwrite01.mfid = fopen(test.bin, w);count = fwrite(fid, randperm(10), int32);fclose(fid);type test.binMATLAB 程式設(shè)計入門篇:讀寫檔案59控制檔案位置指標(biāo)n檔案位置指標(biāo):n決定下一次進(jìn)行資料讀取或?qū)懭氲奈恢谩控制此指標(biāo)的函數(shù)如下:nfeof測試指標(biāo)是否在檔案結(jié)束位置nfseek設(shè)定指標(biāo)位置nftell取得指標(biāo)位置nfrewind重設(shè)指標(biāo)至檔案起始位置MATLAB 程式設(shè)計入門篇:讀寫檔案60foefn測試指標(biāo)是否在檔案結(jié)束位置nEx:feof01.mfid = fopen(test.txt);A = fscanf(fid, %g, 3 4)feof(fid)n在上例中,feof(fid) 傳回 1,表示檔案指標(biāo)已經(jīng)在檔案結(jié)束位置n因為 tes
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版房地產(chǎn)買賣合同模板
- 2024年港口疏浚及堤壩修建合同3篇
- 勞動合同書電子版
- 水甲苯精餾塔課程設(shè)計
- 插班課程設(shè)計案例分析
- 管道課程設(shè)計小結(jié)
- 航空物流課程設(shè)計
- 航天研學(xué)課程設(shè)計
- 烘焙網(wǎng)絡(luò)營銷課程設(shè)計
- 機(jī)械小車課程設(shè)計
- 【發(fā)動機(jī)曲軸數(shù)控加工工藝過程卡片的設(shè)計7800字(論文)】
- 中藥破壁飲片文稿專家講座
- 2025年高考語文備考之名著閱讀《鄉(xiāng)土中國》重要概念解釋一覽表
- JG197-2006 預(yù)應(yīng)力混凝土空心方樁
- 醫(yī)院護(hù)理培訓(xùn)課件:《安全注射》
- 變、配電室門禁管理制度
- 11304+《管理案例分析》紙考2023.12
- 《淺談跳繩體育游戲的實踐研究》 論文
- 《勇敢面對挫折和困難》參考課件
- 小學(xué)體育期末檢測方案
- 2023-2024學(xué)年福建省莆田市荔城區(qū)中山中學(xué)、九中聯(lián)考九年級(上)期末數(shù)學(xué)試卷
評論
0/150
提交評論