matlab程序設計入門檔案讀寫(共70張)_第1頁
matlab程序設計入門檔案讀寫(共70張)_第2頁
matlab程序設計入門檔案讀寫(共70張)_第3頁
matlab程序設計入門檔案讀寫(共70張)_第4頁
matlab程序設計入門檔案讀寫(共70張)_第5頁
已閱讀5頁,還剩65頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

21、的是:n雖然原檔案的前兩個字節是 T 和 h,但是在以 16 為一個單位時nT 會是 ( )n而 h 則是 ( )n因此我們再重組成 16 時,h 會在前而 T 會在后。MATLAB 程式設計入門篇:讀寫檔案寫入二進制檔案n 函數:n矩陣 - 二進制格式 - 寫入檔案n傳回成功寫入的個數。n以下用 產生一大小為 40 的二進制檔案n在使用 指令來顯示檔案內容時,看不到其內容n因為是 檔案n如果 的值小于 10,就表示 的運算有誤n: 01 = (, w); = (, (10), 32);(); MATLAB 程式設計入門篇:讀寫檔案控制檔案位置指針n檔案位置指針:n決定下一次進行數據讀取或寫入

22、的位置。n控制此指針的函數如下:n測試指針是否在檔案結束位置n設定指針位置n取得指針位置n重設指針至檔案起始位置MATLAB 程式設計入門篇:讀寫檔案n測試指針是否在檔案結束位置n01 = ();A = (, , 3 4)()n在上例中,() 傳回 1,表示檔案指針已經在檔案結束位置n因為 只包含 10 個數目字。MATLAB 程式設計入門篇:讀寫檔案A =1 16 49 1004 25 64 09 36 81 0 =1MATLAB 程式設計入門篇:讀寫檔案n從 的起始位置讀出數據n用 來重設指針的位置:n ();n A = (, , 5)n:nA =n 1n 4n 9n 16n 25MATLAB 程式設計入門篇:讀

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論