第8章 高級編程技術.ppt_第1頁
第8章 高級編程技術.ppt_第2頁
第8章 高級編程技術.ppt_第3頁
第8章 高級編程技術.ppt_第4頁
第8章 高級編程技術.ppt_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1 第8章高級編程技術 2 本章目標 掌握MATLAB文件處理方法理解MATLAB應用程序接口的原理了解結構和元胞這兩種復雜數據類型了解面向對象編程的基本概念 3 主要內容 8 1文件8 2應用程序接口 4 8 1文件 文件可分為兩類 文本文件由字符和與字符的顯示格式有關的控制符構成常見擴展名 TXT BAT HTM 二進制文件二進制文件為非文本文件常見擴展名 COM EXE BMP WAV 5 MATLAB中基本的低級文件I O指令 1 打開和關閉文件fopen fclose2 格式讀寫fprintf fscanf fgetl fgets3 非格式讀寫fread fwrite4 文件定位和狀態feof fseek ftell ferror frewind 6 8 1 1文件的打開與關閉 1 fopen函數fid fopen filename permission fid message fopen filename permssion filename permission machineformat fopen fid fid fopen all 2 fclose函數status fclose fid status fclose all 例 打開一個名為std dat的數據文件并進行讀操作 命令為 fid fopen my txt r 7 8 1 2格式化數據的讀寫 fprintf函數count fprintf fid format A fscanf函數 A count fscanf fid format size 8 例8 1 計算當x 01 時f x ex的值 并將結果寫入到文件my txt中 程序x 0 0 1 1 y x exp x y有兩行數據fid fopen my txt w fprintf fid 6 2f 12 8f n y fclose fid 9 例8 2 從上例中生成的文件my txt中讀取數據 并將結果輸出到屏幕 程序fid fopen my txt r a count fscanf fid f f 2inf fprintf 1 f f n a fclose fid 輸出同例8 1文件中的數據格式 10 8 1 3文件定位和文件狀態 1 feof函數 檢測文件是否已經結束status feof fid 2 ferror函數 用于查詢文件的輸入 輸出錯誤信息msg ferror fid 3 frewind函數 使位置指針重新返回文件的開頭frewind fid 4 fseek函數 設置文件的位置指針status fseek fid offset origin 5 ftell函數 用于查詢當前文件指針的位置position ftell fid 11 例8 3輸出文件的大小 程序fid fopen my txt r fseek fid 0 eof x ftell fid fprintf 1 FileSize d n x frewind fid x ftell fid fprintf 1 FilePosition d n x fclose fid 輸出FileSize 231FilePosition 0 12 8 1 4按行讀取數據 1 fgetl函數 按行從文件中讀取數據 但不讀取換行符 line fgetl fid 2 fgets函數 用于從文件中讀取行 保留換行符并把行作為字符串返回 1 line fgets fid 2 line fgets fid nchar 13 例8 4 編寫一個程序 用于讀取例8 1生成的數據 程序fid fopen my txt r while feof fid 在文件沒有結束時按行讀取數據s fgets fid fprintf 1 s s endfclose fid 輸出同例8 1文件中的數據格式 14 8 1 5二進制數據文件的讀寫 fwrite函數 用于向一個文件寫入二進制數據count fwrite fid A precision fread函數 用于從文件中讀二進制數據 A count fread fid size precision 注意 使用函數fread 和fwrite 讀寫文件時 必須以二進制方式打開文件 15 例8 5 將5行5列 魔方陣 存入二進制文件中 程序fid fopen my dat w a magic 5 fwrite fid a long fclose fid 16 例8 6 從二進制文件中讀取 魔方陣 程序fid fopen my dat r A count fread fid 5 inf long fclose fid A 17 8 1 6圖像 聲音文件的讀寫 1 imread函數 從文件中讀入圖像A imread filename fmt A map imread filename fmt 2 image函數 顯示圖像image A 3 imwrite函數 將圖像寫入文件imwrite A filename fmt imwrite A map filename fmt 18 例8 7 顯示一幅真彩 RGB 圖像 程序 x map imread C MATLAB7 toolbox matlab demos street1 jpg image x 19 例8 8將圖像寫入文件 程序 x map imread C MATLAB7 toolbox matlab demos street1 jpg imwrite x my bmp 將圖像保存為真彩色的bmp x map imread my bmp image x 20 8 1 6圖像 聲音文件的讀寫 4 imfinfo函數 查詢圖像文件信息innfo imflnfo filename 5 wavread函數 用于讀取擴展名為 wav 的聲音文件y wavread file y fs nbits wavread file 6 wavwrite函數 用于將數據寫入到擴展名為 wav 的聲音文件中wavwrite y fs nbits wavefile 7 wavplay函數 利用windows音頻輸出設備播放聲音wavplay y fs 21 例8 9 讀取一個音頻數據文件 以不同頻率播放 并顯示聲音波形 程序 y wavread C MATLAB7 toolbox simulink simdemos simgeneral toilet wav plot y wavplay y wavplay y 11025 wavplay y 44100 22 8 2應用程序接口 MATLAB的外部接口應用包括如下內容 1 在MATLAB中調用已有的C C 語言代碼 2 在C C 語言中調用MATLAB的算法 3 利用COM標準進行客戶 服務器模式開發 例如在VisualBasic程序或者MicrosoftExcel中調用MATLAB的算法 4 在C C 語言中讀寫MAT數據文件 23 8 2 1MEX文件 例8 10簡單MEX文件示例mexHelloWorld c 程序 include mex h voidmexFunction intnlhs mxArray plhs intnrhs constmxArray prhs mexPrintf HelloMatlabWorld 24 8 2 2MATLAB計算引擎 MATLAB的計算引擎應用就是利用MATLAB提供的一組接口函數 在用戶開發的C C 語言應用程序中 通過某種通信機制后臺調用MATLAB應用程序以完成復雜的系統任務 25 例8 11 設計一程序 在C C 語言中調用mesh函數來繪制高斯矩陣的曲面 解題步驟 26 例8 11程序 include include engine h voidmain Engine ep intstatus 0 打開計算引擎ep engOpen NULL if ep Engine NULL printf 錯誤 無法打開MATLAB計算引擎 n exit 1 執行MATLAB指令engEvalString ep mesh peaks getchar 關閉MATLAB計算引擎status engClose ep if status 0 printf 無法正常關閉MATLAB計算引擎 n exit 1 27 8 2 3基于COM組件的接口編程 該方法的主要特點有 1 應用程序完全脫離MATLAB工作環境 2 MATLAB數學庫和工具箱中包括的各種各樣的函數 所以降低了編寫算法難度 3 由于將算法程序做成了COM組件的形式 所以實現了算法的保密 28 8 2 4在C C 語言中讀寫MAT數據文件 支持C C 語言讀寫MAT文件的函數庫有下面幾個 1 打開數據文件 matOpenMATFile matOpen constchar filename constchar mode 2 關閉數據文件 matCloseintmatClose MATFile mfp 3 獲取變量 matGetVariablemxArray matGetVariable MATFile mfp constchar name 4 寫入數據 matPutVariableintmatPutVariable MATFile mfp constchar name constmxArray mp 29 擴展閱讀 8 3結構數組8 4元胞數組8 5面向對象程序設計 30 應用舉例 例8 12在C C 語言中調用MATLAB計算魔方陣 并將結果顯示到屏幕 31 程序代碼 1 include engine h includevoidmain Engine ep double p mxArray equation inti 0 j 0 intstatus 0 打開計算引擎ep engOpen NULL if ep Engine NULL printf 錯誤 無法打開MATLAB計算引擎 n exit 1 32 程序代碼 2 執行MATLAB指令engEvalString ep A magic 5 equation engGetVariable ep A p mxGetPr equation printf nMATLAB中計算magic 5 n for i 0 i 5 i for j 0 j 5 j printf 8 0lf p i j 5 printf n 關閉MATLAB計算引擎status engClose ep if status 0 printf 無法正常關閉MATLAB計算引擎 n exit 1 33 例8 13 34 程序代碼 1 include include include engine h voidmain Engine ep intstatus 0 ep engOpen NULL 執行MATLAB指令doubleA 2 3 4 1 1 1 3 5 1 B 5 5 9 double pa pb pc mxArray x y z 35 程序代碼 2 x mxCreateDoubleMatrix 3 3 mxREAL y mxCreateDoubleMatrix 3 1 mxREAL pa mxGetPr x pb mxGetPr y memcpy pa A 9 sizeof double me

溫馨提示

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

評論

0/150

提交評論