




已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1 第8章高級編程技術(shù) 2 本章目標(biāo) 掌握MATLAB文件處理方法理解MATLAB應(yīng)用程序接口的原理了解結(jié)構(gòu)和元胞這兩種復(fù)雜數(shù)據(jù)類型了解面向?qū)ο缶幊痰幕靖拍?3 主要內(nèi)容 8 1文件8 2應(yīng)用程序接口 4 8 1文件 文件可分為兩類 文本文件由字符和與字符的顯示格式有關(guān)的控制符構(gòu)成常見擴展名 TXT BAT HTM 二進制文件二進制文件為非文本文件常見擴展名 COM EXE BMP WAV 5 MATLAB中基本的低級文件I O指令 1 打開和關(guān)閉文件fopen fclose2 格式讀寫fprintf fscanf fgetl fgets3 非格式讀寫fread fwrite4 文件定位和狀態(tài)feof fseek ftell ferror frewind 6 8 1 1文件的打開與關(guān)閉 1 fopen函數(shù)fid fopen filename permission fid message fopen filename permssion filename permission machineformat fopen fid fid fopen all 2 fclose函數(shù)status fclose fid status fclose all 例 打開一個名為std dat的數(shù)據(jù)文件并進行讀操作 命令為 fid fopen my txt r 7 8 1 2格式化數(shù)據(jù)的讀寫 fprintf函數(shù)count fprintf fid format A fscanf函數(shù) A count fscanf fid format size 8 例8 1 計算當(dāng)x 01 時f x ex的值 并將結(jié)果寫入到文件my txt中 程序x 0 0 1 1 y x exp x y有兩行數(shù)據(jù)fid fopen my txt w fprintf fid 6 2f 12 8f n y fclose fid 9 例8 2 從上例中生成的文件my txt中讀取數(shù)據(jù) 并將結(jié)果輸出到屏幕 程序fid fopen my txt r a count fscanf fid f f 2inf fprintf 1 f f n a fclose fid 輸出同例8 1文件中的數(shù)據(jù)格式 10 8 1 3文件定位和文件狀態(tài) 1 feof函數(shù) 檢測文件是否已經(jīng)結(jié)束status feof fid 2 ferror函數(shù) 用于查詢文件的輸入 輸出錯誤信息msg ferror fid 3 frewind函數(shù) 使位置指針重新返回文件的開頭frewind fid 4 fseek函數(shù) 設(shè)置文件的位置指針status fseek fid offset origin 5 ftell函數(shù) 用于查詢當(dāng)前文件指針的位置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按行讀取數(shù)據(jù) 1 fgetl函數(shù) 按行從文件中讀取數(shù)據(jù) 但不讀取換行符 line fgetl fid 2 fgets函數(shù) 用于從文件中讀取行 保留換行符并把行作為字符串返回 1 line fgets fid 2 line fgets fid nchar 13 例8 4 編寫一個程序 用于讀取例8 1生成的數(shù)據(jù) 程序fid fopen my txt r while feof fid 在文件沒有結(jié)束時按行讀取數(shù)據(jù)s fgets fid fprintf 1 s s endfclose fid 輸出同例8 1文件中的數(shù)據(jù)格式 14 8 1 5二進制數(shù)據(jù)文件的讀寫 fwrite函數(shù) 用于向一個文件寫入二進制數(shù)據(jù)count fwrite fid A precision fread函數(shù) 用于從文件中讀二進制數(shù)據(jù) A count fread fid size precision 注意 使用函數(shù)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函數(shù) 從文件中讀入圖像A imread filename fmt A map imread filename fmt 2 image函數(shù) 顯示圖像image A 3 imwrite函數(shù) 將圖像寫入文件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函數(shù) 查詢圖像文件信息innfo imflnfo filename 5 wavread函數(shù) 用于讀取擴展名為 wav 的聲音文件y wavread file y fs nbits wavread file 6 wavwrite函數(shù) 用于將數(shù)據(jù)寫入到擴展名為 wav 的聲音文件中wavwrite y fs nbits wavefile 7 wavplay函數(shù) 利用windows音頻輸出設(shè)備播放聲音wavplay y fs 21 例8 9 讀取一個音頻數(shù)據(jù)文件 以不同頻率播放 并顯示聲音波形 程序 y wavread C MATLAB7 toolbox simulink simdemos simgeneral toilet wav plot y wavplay y wavplay y 11025 wavplay y 44100 22 8 2應(yīng)用程序接口 MATLAB的外部接口應(yīng)用包括如下內(nèi)容 1 在MATLAB中調(diào)用已有的C C 語言代碼 2 在C C 語言中調(diào)用MATLAB的算法 3 利用COM標(biāo)準(zhǔn)進行客戶 服務(wù)器模式開發(fā) 例如在VisualBasic程序或者MicrosoftExcel中調(diào)用MATLAB的算法 4 在C C 語言中讀寫MAT數(shù)據(jù)文件 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的計算引擎應(yīng)用就是利用MATLAB提供的一組接口函數(shù) 在用戶開發(fā)的C C 語言應(yīng)用程序中 通過某種通信機制后臺調(diào)用MATLAB應(yīng)用程序以完成復(fù)雜的系統(tǒng)任務(wù) 25 例8 11 設(shè)計一程序 在C C 語言中調(diào)用mesh函數(shù)來繪制高斯矩陣的曲面 解題步驟 26 例8 11程序 include include engine h voidmain Engine ep intstatus 0 打開計算引擎ep engOpen NULL if ep Engine NULL printf 錯誤 無法打開MATLAB計算引擎 n exit 1 執(zhí)行MATLAB指令engEvalString ep mesh peaks getchar 關(guān)閉MATLAB計算引擎status engClose ep if status 0 printf 無法正常關(guān)閉MATLAB計算引擎 n exit 1 27 8 2 3基于COM組件的接口編程 該方法的主要特點有 1 應(yīng)用程序完全脫離MATLAB工作環(huán)境 2 MATLAB數(shù)學(xué)庫和工具箱中包括的各種各樣的函數(shù) 所以降低了編寫算法難度 3 由于將算法程序做成了COM組件的形式 所以實現(xiàn)了算法的保密 28 8 2 4在C C 語言中讀寫MAT數(shù)據(jù)文件 支持C C 語言讀寫MAT文件的函數(shù)庫有下面幾個 1 打開數(shù)據(jù)文件 matOpenMATFile matOpen constchar filename constchar mode 2 關(guān)閉數(shù)據(jù)文件 matCloseintmatClose MATFile mfp 3 獲取變量 matGetVariablemxArray matGetVariable MATFile mfp constchar name 4 寫入數(shù)據(jù) matPutVariableintmatPutVariable MATFile mfp constchar name constmxArray mp 29 擴展閱讀 8 3結(jié)構(gòu)數(shù)組8 4元胞數(shù)組8 5面向?qū)ο蟪绦蛟O(shè)計 30 應(yīng)用舉例 例8 12在C C 語言中調(diào)用MATLAB計算魔方陣 并將結(jié)果顯示到屏幕 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 執(zhí)行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 關(guān)閉MATLAB計算引擎status engClose ep if status 0 printf 無法正常關(guān)閉MATLAB計算引擎 n exit 1 33 例8 13 34 程序代碼 1 include include include engine h voidmain Engine ep intstatus 0 ep engOpen NULL 執(zhí)行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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年工程經(jīng)濟復(fù)習(xí)的重難點試題及答案
- 2025年經(jīng)濟法概論現(xiàn)場試題及答案
- 探討公共關(guān)系學(xué)中的社會媒體營銷策略及試題及答案
- 2025年中級經(jīng)濟師復(fù)習(xí)資料與試題及答案
- 市政工程資質(zhì)管理試題及答案
- 2024年福建福州地鐵高校畢業(yè)生招聘筆試真題
- 行政管理經(jīng)濟法試題學(xué)習(xí)總結(jié)及答案
- 中級經(jīng)濟師服務(wù)經(jīng)濟學(xué)試題及答案
- 市政考試志愿者心得試題及答案
- 2025年掌握合同簽訂的藝術(shù)
- 輸變電工程監(jiān)督檢查標(biāo)準(zhǔn)化清單-質(zhì)監(jiān)站檢查
- GB/T 26718-2024城市軌道交通安全防范系統(tǒng)技術(shù)要求
- 《心房顫動》課件
- 靜脈輸液操作考試流程
- 校園藝術(shù)團指導(dǎo)教師聘用合同
- 護理記錄與交班制度
- 2024-2030年中國海外醫(yī)療中介服務(wù)行業(yè)運行現(xiàn)狀及投資潛力分析報告
- 幼兒園應(yīng)急疏散演練
- 電力線路改遷工程預(yù)算方案
- 《家庭安全用電培訓(xùn)》課件
- 物理化學(xué)知到智慧樹章節(jié)測試課后答案2024年秋華東理工大學(xué)
評論
0/150
提交評論