matlab程序設(shè)計入門檔案讀寫_第1頁
matlab程序設(shè)計入門檔案讀寫_第2頁
matlab程序設(shè)計入門檔案讀寫_第3頁
matlab程序設(shè)計入門檔案讀寫_第4頁
matlab程序設(shè)計入門檔案讀寫_第5頁
已閱讀5頁,還剩64頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、matlab 程式設(shè)計入門篇:讀寫檔案18 檔案讀寫張智星清大資工系 多媒體檢索實驗室matlab 程式設(shè)計入門篇:讀寫檔案本章重點n 內(nèi)建許多有關(guān)檔案讀寫的函數(shù)n對二進制檔案或 檔案都可以進行處理n開啟n關(guān)閉n儲存matlab 程式設(shè)計入門篇:讀寫檔案高階的檔案讀寫指令n先列出常用讀寫檔案指令,稍后將介紹用法類別支持檔案格式指令一般數(shù)據(jù) - , - , - - , - 電子表格 - 1 - 123 1, 1matlab 程式設(shè)計入門篇:讀寫檔案高階的檔案讀寫指令()類別支持檔案格式指令科學(xué)資料 - - , - , 電影 - 影像, , , , , , , , , , , , , , 音訊,

2、- , - , matlab 程式設(shè)計入門篇:讀寫檔案n使用 指令來讀取n條件:n數(shù)據(jù)文件是由逗號分開n只有包含數(shù)值資料n01( 的內(nèi)容:n); % 列出 的內(nèi)容a = ()% 將 的內(nèi)容讀到矩陣 amatlab 程式設(shè)計入門篇:讀寫檔案 的內(nèi)容:1, 2, 34, 56, 7, 8, 9a =1 2 3 04 5 0 06 7 8 9 會傳回一個數(shù)值矩陣其中缺席的資料將以 0 填入。matlab 程式設(shè)計入門篇:讀寫檔案n如果數(shù)值數(shù)據(jù)的分界符號()不是逗點,就不能使用 指令,而要改用 指令n01( 的內(nèi)容:n); % 列出 的內(nèi)容a = (, t)% 將 的內(nèi)容讀到矩陣 amatlab 程式

3、設(shè)計入門篇:讀寫檔案 的內(nèi)容:123456789a =1 2 3 04 5 0 06 7 8 9上例中 的數(shù)據(jù)是以定位鍵()隔開,因此 指令的第二個自變量是 t,以代表定位鍵matlab 程式設(shè)計入門篇:讀寫檔案n如果檔案數(shù)據(jù)包含數(shù)值及字符串,我們就必須改用 指令n01( 的內(nèi)容:n); % 列出 的內(nèi)容, , = (, )matlab 程式設(shè)計入門篇:讀寫檔案 的內(nèi)容: 13 10 41 = = =131041在上述范例中, 包含三個字段(或是三直行的數(shù)據(jù)) 可在第二個自變量指定數(shù)據(jù)型態(tài)例如上例中 代表字符串, 代表整數(shù)也同時將讀入的數(shù)據(jù)設(shè)定到不同的輸出自變量由于數(shù)據(jù)型態(tài)的不同,輸出自變量也

4、有不同的型態(tài)以上述范例來說, 和 都是字符串異值數(shù)組,而 則是數(shù)值數(shù)組。matlab 程式設(shè)計入門篇:讀寫檔案使用定位鍵來分隔字段n上例中,我們利用空格來分隔字段n如果字段值本身也有空格 ?n改用定位鍵來分隔字段n02(2 的內(nèi)容:n); 2% 列出 2 的內(nèi)容, , = (2, , , t)matlab 程式設(shè)計入門篇:讀寫檔案n結(jié)果與前一例相同n 指令中加上對分界字符()的定義,就可以讀出由定位鍵所分隔的數(shù)據(jù)文件n若不指定時,預(yù)設(shè)為空格鍵matlab 程式設(shè)計入門篇:讀寫檔案讀取文字文件n 也可以讀取一個文字文件n同時把檔案內(nèi)的每一列文字變成字符串異質(zhì)數(shù)組里面的每一個元素n03 = (03

5、,n,);()% 印出 的數(shù)據(jù)類別1% 列出 第一列2% 列出 第二列matlab 程式設(shè)計入門篇:讀寫檔案 = =(03,n,); =()% 印出 的數(shù)據(jù)類別上例使用 讀入 03(也就是此范例檔案),并顯示此檔案的第一列和第二列。 指令的用法還有很多,功能也很強大在下輸入 可以得到完整的技術(shù)支持。matlab 程式設(shè)計入門篇:讀寫檔案n若只是要將一個檔案的內(nèi)容送到一個字符串,可以使用 指令n:范例16-6:01 = (2);()()matlab 程式設(shè)計入門篇:讀寫檔案 = =1 64上例中, 指令會將檔案 2 的內(nèi)容送到字符串變量 () 的值是 ,顯示 的數(shù)據(jù)型態(tài)是字符串() 顯示字符串

6、的長度是 64。matlab 程式設(shè)計入門篇:讀寫檔案影像與音訊檔案n有關(guān)于影像檔案的讀寫,請參閱本書第十九章影像顯示與讀寫;n有關(guān)音訊檔案的讀寫,請參閱本書第二十章音訊讀寫、錄制與播放。matlab 程式設(shè)計入門篇:讀寫檔案更繁復(fù)的檔案格式n一般情況下n盡量采取先前介紹的指令來進行讀寫。n數(shù)據(jù)格式比較繁復(fù)時n需要一列一列讀進來n再進行剖析()n相關(guān)指令將在以下介紹。matlab 程式設(shè)計入門篇:讀寫檔案開啟檔案n無論讀寫 或二進制檔案,都必需先用 函數(shù)來開啟檔案,語法如:n = (, )n其中 表示欲讀寫的文件名稱n 則表示欲對檔案進行的處理方式,可以是下列任一字符串:nlr:只準(zhǔn)讀取()檔

7、案nlw:只準(zhǔn)寫入()檔案nla:只準(zhǔn)加入()檔案nl:可讀取及加入檔案( )n省略第二個自變量, 的默認值就是 r。matlab 程式設(shè)計入門篇:讀寫檔案有關(guān)n在下, 字符串必需能夠分辨或 檔案。n例如:若要讀檔案,則 字符串必需是“”n 另外支持很多 字符串,可輸入 得到完整的信息。n 函數(shù)傳回一個檔案辨識碼,通常是個非負的整數(shù),我們可用此辨識碼來對此檔案進行各種讀寫的處理。matlab 程式設(shè)計入門篇:讀寫檔案01n上例可知當(dāng)檔案不存在時,回傳的 是 1n同時 會包含相關(guān)的錯誤信息。, = (, r);( = n, );( = n, ); = -1 = . . . .matlab 程式設(shè)

8、計入門篇:讀寫檔案02n若開啟成功,則傳回的 是一個大于 2 的整數(shù),而且傳回的 是一個空字符串,例如:, = (02, r);( = n, );( = n, ); = 3 =matlab 程式設(shè)計入門篇:讀寫檔案:n 可傳回第二個自變量來顯示錯誤訊息。n為了安全起見,最好在每次使用 時,都測試其傳回的 是否為有效值。n 使用 1 來代表標(biāo)準(zhǔn)輸出( )n2 代表標(biāo)準(zhǔn)錯誤輸出( )n因此在使用這兩個 的值時,可以不必使用 來開啟檔案。matlab 程式設(shè)計入門篇:讀寫檔案關(guān)閉檔案n完成檔案的讀寫之后,可用 函數(shù)來關(guān)閉檔案,用法如下:n = ();n若一切順利, 傳回 0。n若無法順利關(guān)閉檔案,則

9、 傳回 -1。n為避免因開啟檔案過多而造成系統(tǒng)資源浪費,一般在完成檔案的讀寫后,即應(yīng)使用 來關(guān)閉檔案matlab 程式設(shè)計入門篇:讀寫檔案:n若要一次關(guān)閉所有開啟的檔案,可用 () 或是 。n開啟及關(guān)閉檔案都是比較耗時的函數(shù),因此盡量不要將他們置于循環(huán)之中,以提高程序執(zhí)行效率。matlab 程式設(shè)計入門篇:讀寫檔案讀取 檔案n 函數(shù):n可將 檔案的內(nèi)容中的某一列讀出n并將該列的 內(nèi)容以轉(zhuǎn)成字符串傳回。n01 = (, r); ()0% 測試檔案指針是否已到達結(jié)束位置 = ();();matlab 程式設(shè)計入門篇:讀寫檔案讀取 檔案()n執(zhí)行上述程序后, 會n先在目前目錄找尋 n若找不到,再根據(jù)

10、搜尋路徑,找出 指令的位置然后再將其內(nèi)容一列一列地列出。n請自行動手試用此范例程序代碼。n輸入 可顯示檔案所在的路徑n 和 均可由檔案讀取一列數(shù)據(jù):n 會舍去換行字符n 函數(shù)則保留換行字符。matlab 程式設(shè)計入門篇:讀寫檔案應(yīng)用:仿真的指令n :用來找出包含某一特定字符串的一列 (, ) = (, r); = 0; () 0, = (); = (, ); ()(: n, ); = + 1;();matlab 程式設(shè)計入門篇:讀寫檔案n如欲列出 中包含 字符串的每一列,可輸入如下:n (, )n6: = (, );n7: ()n若要進行更復(fù)雜的字符串比對n例如要在一個檔案中找出b 和 d 中

11、間夾1至3個元音的英文字n請參考本書姊妹作 程序設(shè)計:進階篇中的第四章通用表達式。matlab 程式設(shè)計入門篇:讀寫檔案n函數(shù)可對檔案作更精確的讀取,用法如下:n = (, )n其中 是欲讀取之檔案的辨識碼n 是格式指定字符串( )n常用的格式指定字符串有下列幾種:n:字符串n:10進位的整數(shù)n:雙倍精準(zhǔn)()的浮點數(shù)( )n其它各種格式指定字符串可輸入 來得到詳細的說明matlab 程式設(shè)計入門篇:讀寫檔案01n有一文字文件 如下:1 4 9 16 2536 49 64 81 100n欲使用 指令讀取其內(nèi)容,可輸入如下:n = (, r);n = (, );n();n% 顯示 matlab 程

12、式設(shè)計入門篇:讀寫檔案 =149162536496481100n上例顯示了 的 指令和 c 的 指令的最大不同:n 的 指令是向量化的()n只要讀入數(shù)據(jù)的型態(tài)正確, 的 指令會一再執(zhí)行n同時把所得結(jié)果存放于一個向量并回傳。matlab 程式設(shè)計入門篇:讀寫檔案n 函數(shù)和 的功能很類似n 函數(shù)從字符串()中讀取數(shù)據(jù)n: = 2(, (2), 10(3)%建立一字符串 = (, )%擷取中的 =3.1416 1.4142 0.47712 =3.14161.41420.4771matlab 程式設(shè)計入門篇:讀寫檔案寫入 檔案n 函數(shù)可將數(shù)據(jù)依格式指定字符串來寫入 檔案,其使用語法如下:n(, , y

13、)n其中 是欲寫入之檔案的辨識碼n 是格式指定字符串,用以指定數(shù)據(jù)寫至檔案的格式ny 是 的數(shù)據(jù)變量n常用的格式指定字符串有下列幾種:n:科學(xué)記號,即將數(shù)值表示成 a10b 的形式n:固定欄寬(含整數(shù)與小數(shù)部份)的表示法n:自動選取 或 n其它各種格式指定字符串可輸入 來得到詳細的在線說明。matlab 程式設(shè)計入門篇:讀寫檔案應(yīng)用:將平方根表寫入檔案n01x = 1:10;y = x; (x); = (, w);(, :rn);(, %2.0f = %10.6frn, y);();( );% 開啟 matlab 程式設(shè)計入門篇:讀寫檔案n在上例中n%2.0f 印出的總欄寬為 2,且不帶小數(shù)n

14、%10.6f 印出的總欄寬為 10,包含 6位的小數(shù)n請自行試驗后開啟 來驗證matlab 程式設(shè)計入門篇:讀寫檔案n 函數(shù)和 函數(shù)的功能很類似n 將數(shù)據(jù)以字符串形式傳回n: = () = n, 2, (2) =(2.000000) = 6.931472001matlab 程式設(shè)計入門篇:讀寫檔案暫存目錄n在某些應(yīng)用上,可能需要用到暫存目錄及臨時文件。n欲取用系統(tǒng)的暫存目錄,可用 如下:n = n:n =nc:11matlab 程式設(shè)計入門篇:讀寫檔案臨時文件n欲開啟一臨時文件,可用 ,如下:n = n:n =nc:11273132matlab 程式設(shè)計入門篇:讀寫檔案n不同系統(tǒng)下 和 會依操

15、作系統(tǒng)的環(huán)境變量而產(chǎn)生不同的回傳字符串n例如在 98 操作系統(tǒng)下n 傳回的字符串可能是nc:n 傳回的字符串可能是nc:512124。matlab 程式設(shè)計入門篇:讀寫檔案應(yīng)用:產(chǎn)生暫存的 檔案n以下利用 產(chǎn)生一個暫存的 檔案,然后再將此檔案顯示在瀏覽器。n: = , ; = (, w);(, n);(, a !n);(, );();( , );% 啟動和 相連結(jié)的應(yīng)用程序matlab 程式設(shè)計入門篇:讀寫檔案n上例產(chǎn)生之網(wǎng)頁如下:n當(dāng) 的計算結(jié)果可用列表()或多媒體檔案(如影像、聲音、動畫等)來呈現(xiàn)時,由網(wǎng)頁來顯示這些結(jié)果是不錯的選擇。matlab 程式設(shè)計入門篇:讀寫檔案網(wǎng)絡(luò)檔案的讀取n

16、也可以直接讀取網(wǎng)絡(luò)上的檔案n通常我們是采用 ( )的方式來指定這些網(wǎng)絡(luò)上的檔案:n一般網(wǎng)頁:n本機硬盤檔案:n:matlab 程式設(shè)計入門篇:讀寫檔案n上例中使用 指令來讀取筆者在清華大學(xué)信息系的首頁n同時(); 將結(jié)果指定到字符串變量 n: 01 = (); ();matlab 程式設(shè)計入門篇:讀寫檔案 . s .matlab 程式設(shè)計入門篇:讀寫檔案n可以直接在讀取網(wǎng)頁后,就儲存到本機硬盤中n02 = , ;% 指定臨時文件(, );% 將網(wǎng)頁內(nèi)容寫到檔案( , );% 開啟此檔案matlab 程式設(shè)計入門篇:讀寫檔案()n在上例中,我們將 的網(wǎng)頁內(nèi)容寫到一個臨時文件n然后再使用瀏覽器開啟

17、此檔案。n另一個和網(wǎng)絡(luò)相關(guān)的功能 n可用來寄發(fā)電子郵件n雖然這個功能和檔案讀寫沒有直接關(guān)系,但也在此一并說明。matlab 程式設(shè)計入門篇:讀寫檔案n 指令的用法:n(, , , )n:收件者n若是只有一位收件者,可用字符串表示n若是有多位收件者,可以使用字符串異質(zhì)數(shù)組來表示。n:主題,以字符串表示。n:電子郵件的內(nèi)容,以字符串表示。n:附加檔案,用異質(zhì)數(shù)組來表示。matlab 程式設(shè)計入門篇:讀寫檔案01n請將 的內(nèi)容改為你自己本身的電子郵件,并試著執(zhí)行一次,以確認此程序代碼的正確性。 = 1, 2; = a ; = a .; = c:;(, , , );matlab 程式設(shè)計入門篇:讀寫檔

18、案n根據(jù)筆者在 6.5 的測試, 目前還不支持中文。n以上范例純粹以 6.5 為主n而 7.0 對 新增了一些新功能n請輸入 來獲取最新的在線支持。n若要在郵件內(nèi)容加入換列,可以使用 碼10n例如::, 10, a 。matlab 程式設(shè)計入門篇:讀寫檔案讀取二進制數(shù)據(jù)n用 函數(shù)可從檔案中讀取二進制數(shù)據(jù)n會將每一個字節(jié)看成一個整數(shù),并將結(jié)果以一矩陣傳回。n例如,檔案 2 的內(nèi)容如下: a !matlab 程式設(shè)計入門篇:讀寫檔案01n:n a !n 可將 的整數(shù)轉(zhuǎn)成 字符n取 的轉(zhuǎn)制是為了使印出的效果易于閱讀 = (2, r); = ();()% 驗證所讀入的數(shù)據(jù)是否正確();matlab 程

19、式設(shè)計入門篇:讀寫檔案02n 函數(shù)可用第二個輸入自變量來控制傳回矩陣的大小 = (2, r); = (, 4)% 只讀 4 個字節(jié)(); =84104105115matlab 程式設(shè)計入門篇:讀寫檔案03n:n =n 84 105 32n 104 115 105n此時 為 2x3 的矩陣。n.上例中為長度4的向量 = (2, r); = (, 2 3)();matlab 程式設(shè)計入門篇:讀寫檔案的第3個自變量n控制 在將二進制數(shù)據(jù)轉(zhuǎn)成 矩陣時所用的精確度n包含:n一次讀取的位數(shù)( )n這些位數(shù)所代表的數(shù)據(jù)型態(tài)n常用的精準(zhǔn)度有下列幾種:帶符號的字符(8 ):不帶符號的字符(8 ):短整數(shù)(16

20、):整數(shù)(通常是 32 ):長整數(shù)(32 或 64 ):不帶符號的短整數(shù)(16 ):不帶符號的整數(shù)(32 ):不帶符號的長整數(shù)(32 或 64 ):單精準(zhǔn)浮點數(shù)(32 ):雙精準(zhǔn)浮點數(shù)(64 )matlab 程式設(shè)計入門篇:讀寫檔案04n:n =n 26708n2 =n 26708 = (2, r); = (, 1, )();2 = 2(2(h),8), 2(t),8)matlab 程式設(shè)計入門篇:讀寫檔案說明04n上例將 2 以短整數(shù)的方式讀入n也就是以 16 為一個單位來轉(zhuǎn)換成整數(shù)n讀出來的第一個數(shù)字,會等于將 h 和 t 轉(zhuǎn)換成 8 ,再并排成 16 n然后再轉(zhuǎn)換成十進制的整數(shù)值n要注意

21、的是:n雖然原檔案的前兩個字節(jié)是 t 和 h,但是在以 16 為一個單位時nt 會是 ( )n而 h 則是 ( )n因此我們再重組成 16 時,h 會在前而 t 會在后。matlab 程式設(shè)計入門篇:讀寫檔案寫入二進制檔案n 函數(shù):n矩陣 - 二進制格式 - 寫入檔案n傳回成功寫入的個數(shù)。n以下用 產(chǎn)生一大小為 40 的二進制檔案n在使用 指令來顯示檔案內(nèi)容時,看不到其內(nèi)容n因為是 檔案n如果 的值小于 10,就表示 的運算有誤n: 01 = (, w); = (, (10), 32);(); matlab 程式設(shè)計入門篇:讀寫檔案控制檔案位置指針n檔案位置指針:n決定下一次進行數(shù)據(jù)讀取或?qū)懭氲奈恢?。n控制此指針的函數(shù)如下:n測試指針是否在檔案結(jié)束位置n設(shè)定指針位置n取得指針位置n重設(shè)指針至檔案起始位置matlab 程式設(shè)計入門篇:讀寫檔案n測試指針是否在檔案結(jié)束位置n01 = ();a = (, , 3 4)()n在上例中,() 傳回 1,表示檔案指針已經(jīng)在檔案結(jié)束位置n因為 只包含 10 個數(shù)目字。matlab 程式設(shè)計入門篇:讀寫檔案a =1 16 49 1004 25 64 09 36 81 0 =1matlab 程式設(shè)計入門篇:讀寫檔案n從 的起始位置讀出數(shù)據(jù)n用 來重設(shè)指針的位置:n ();n a = (, , 5)n:na =n 1n 4n

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論