




已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1 第8章高級(jí)編程技術(shù) 2 本章目標(biāo) 掌握MATLAB文件處理方法理解MATLAB應(yīng)用程序接口的原理了解結(jié)構(gòu)和元胞這兩種復(fù)雜數(shù)據(jù)類(lèi)型了解面向?qū)ο缶幊痰幕靖拍?3 主要內(nèi)容 8 1文件8 2應(yīng)用程序接口 4 8 1文件 文件可分為兩類(lèi) 文本文件由字符和與字符的顯示格式有關(guān)的控制符構(gòu)成常見(jiàn)擴(kuò)展名 TXT BAT HTM 二進(jìn)制文件二進(jìn)制文件為非文本文件常見(jiàn)擴(kuò)展名 COM EXE BMP WAV 5 MATLAB中基本的低級(jí)文件I O指令 1 打開(kāi)和關(guān)閉文件fopen fclose2 格式讀寫(xiě)fprintf fscanf fgetl fgets3 非格式讀寫(xiě)fread fwrite4 文件定位和狀態(tài)feof fseek ftell ferror frewind 6 8 1 1文件的打開(kāi)與關(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 例 打開(kāi)一個(gè)名為std dat的數(shù)據(jù)文件并進(jìn)行讀操作 命令為 fid fopen my txt r 7 8 1 2格式化數(shù)據(jù)的讀寫(xiě) fprintf函數(shù)count fprintf fid format A fscanf函數(shù) A count fscanf fid format size 8 例8 1 計(jì)算當(dāng)x 01 時(shí)f x ex的值 并將結(jié)果寫(xiě)入到文件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ù) 檢測(cè)文件是否已經(jīng)結(jié)束status feof fid 2 ferror函數(shù) 用于查詢文件的輸入 輸出錯(cuò)誤信息msg ferror fid 3 frewind函數(shù) 使位置指針重新返回文件的開(kāi)頭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 編寫(xiě)一個(gè)程序 用于讀取例8 1生成的數(shù)據(jù) 程序fid fopen my txt r while feof fid 在文件沒(méi)有結(jié)束時(shí)按行讀取數(shù)據(jù)s fgets fid fprintf 1 s s endfclose fid 輸出同例8 1文件中的數(shù)據(jù)格式 14 8 1 5二進(jìn)制數(shù)據(jù)文件的讀寫(xiě) fwrite函數(shù) 用于向一個(gè)文件寫(xiě)入二進(jìn)制數(shù)據(jù)count fwrite fid A precision fread函數(shù) 用于從文件中讀二進(jìn)制數(shù)據(jù) A count fread fid size precision 注意 使用函數(shù)fread 和fwrite 讀寫(xiě)文件時(shí) 必須以二進(jìn)制方式打開(kāi)文件 15 例8 5 將5行5列 魔方陣 存入二進(jìn)制文件中 程序fid fopen my dat w a magic 5 fwrite fid a long fclose fid 16 例8 6 從二進(jìn)制文件中讀取 魔方陣 程序fid fopen my dat r A count fread fid 5 inf long fclose fid A 17 8 1 6圖像 聲音文件的讀寫(xiě) 1 imread函數(shù) 從文件中讀入圖像A imread filename fmt A map imread filename fmt 2 image函數(shù) 顯示圖像image A 3 imwrite函數(shù) 將圖像寫(xiě)入文件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將圖像寫(xiě)入文件 程序 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圖像 聲音文件的讀寫(xiě) 4 imfinfo函數(shù) 查詢圖像文件信息innfo imflnfo filename 5 wavread函數(shù) 用于讀取擴(kuò)展名為 wav 的聲音文件y wavread file y fs nbits wavread file 6 wavwrite函數(shù) 用于將數(shù)據(jù)寫(xiě)入到擴(kuò)展名為 wav 的聲音文件中wavwrite y fs nbits wavefile 7 wavplay函數(shù) 利用windows音頻輸出設(shè)備播放聲音wavplay y fs 21 例8 9 讀取一個(gè)音頻數(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 語(yǔ)言代碼 2 在C C 語(yǔ)言中調(diào)用MATLAB的算法 3 利用COM標(biāo)準(zhǔn)進(jìn)行客戶 服務(wù)器模式開(kāi)發(fā) 例如在VisualBasic程序或者M(jìn)icrosoftExcel中調(diào)用MATLAB的算法 4 在C C 語(yǔ)言中讀寫(xiě)MAT數(shù)據(jù)文件 23 8 2 1MEX文件 例8 10簡(jiǎn)單MEX文件示例mexHelloWorld c 程序 include mex h voidmexFunction intnlhs mxArray plhs intnrhs constmxArray prhs mexPrintf HelloMatlabWorld 24 8 2 2MATLAB計(jì)算引擎 MATLAB的計(jì)算引擎應(yīng)用就是利用MATLAB提供的一組接口函數(shù) 在用戶開(kāi)發(fā)的C C 語(yǔ)言應(yīng)用程序中 通過(guò)某種通信機(jī)制后臺(tái)調(diào)用MATLAB應(yīng)用程序以完成復(fù)雜的系統(tǒng)任務(wù) 25 例8 11 設(shè)計(jì)一程序 在C C 語(yǔ)言中調(diào)用mesh函數(shù)來(lái)繪制高斯矩陣的曲面 解題步驟 26 例8 11程序 include include engine h voidmain Engine ep intstatus 0 打開(kāi)計(jì)算引擎ep engOpen NULL if ep Engine NULL printf 錯(cuò)誤 無(wú)法打開(kāi)MATLAB計(jì)算引擎 n exit 1 執(zhí)行MATLAB指令engEvalString ep mesh peaks getchar 關(guān)閉MATLAB計(jì)算引擎status engClose ep if status 0 printf 無(wú)法正常關(guān)閉MATLAB計(jì)算引擎 n exit 1 27 8 2 3基于COM組件的接口編程 該方法的主要特點(diǎn)有 1 應(yīng)用程序完全脫離MATLAB工作環(huán)境 2 MATLAB數(shù)學(xué)庫(kù)和工具箱中包括的各種各樣的函數(shù) 所以降低了編寫(xiě)算法難度 3 由于將算法程序做成了COM組件的形式 所以實(shí)現(xiàn)了算法的保密 28 8 2 4在C C 語(yǔ)言中讀寫(xiě)MAT數(shù)據(jù)文件 支持C C 語(yǔ)言讀寫(xiě)MAT文件的函數(shù)庫(kù)有下面幾個(gè) 1 打開(kāi)數(shù)據(jù)文件 matOpenMATFile matOpen constchar filename constchar mode 2 關(guān)閉數(shù)據(jù)文件 matCloseintmatClose MATFile mfp 3 獲取變量 matGetVariablemxArray matGetVariable MATFile mfp constchar name 4 寫(xiě)入數(shù)據(jù) matPutVariableintmatPutVariable MATFile mfp constchar name constmxArray mp 29 擴(kuò)展閱讀 8 3結(jié)構(gòu)數(shù)組8 4元胞數(shù)組8 5面向?qū)ο蟪绦蛟O(shè)計(jì) 30 應(yīng)用舉例 例8 12在C C 語(yǔ)言中調(diào)用MATLAB計(jì)算魔方陣 并將結(jié)果顯示到屏幕 31 程序代碼 1 include engine h includevoidmain Engine ep double p mxArray equation inti 0 j 0 intstatus 0 打開(kāi)計(jì)算引擎ep engOpen NULL if ep Engine NULL printf 錯(cuò)誤 無(wú)法打開(kāi)MATLAB計(jì)算引擎 n exit 1 32 程序代碼 2 執(zhí)行MATLAB指令engEvalString ep A magic 5 equation engGetVariable ep A p mxGetPr equation printf nMATLAB中計(jì)算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計(jì)算引擎status engClose ep if status 0 printf 無(wú)法正常關(guān)閉MATLAB計(jì)算引擎 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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江國(guó)企招聘2025臺(tái)州溫嶺市糧食收儲(chǔ)有限責(zé)任公司招聘14人筆試參考題庫(kù)附帶答案詳解
- 五險(xiǎn)一金/年薪12萬(wàn)五九煤炭(集團(tuán))招聘50人筆試參考題庫(kù)附帶答案詳解
- 2025內(nèi)蒙古包頭市中運(yùn)鐵路運(yùn)輸設(shè)備有限公司招聘238人筆試參考題庫(kù)附帶答案詳解
- 中國(guó)醫(yī)科大學(xué)《審計(jì)案例與模擬》2023-2024學(xué)年第二學(xué)期期末試卷
- 黔南民族職業(yè)技術(shù)學(xué)院《中小學(xué)信息技術(shù)教學(xué)法》2023-2024學(xué)年第二學(xué)期期末試卷
- 雅安職業(yè)技術(shù)學(xué)院《戲劇影視表演片段訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 河北科技學(xué)院《中醫(yī)兒科學(xué)理論》2023-2024學(xué)年第二學(xué)期期末試卷
- 陜西科技大學(xué)鎬京學(xué)院《通信系統(tǒng)DSP》2023-2024學(xué)年第二學(xué)期期末試卷
- 洛陽(yáng)師范學(xué)院《安全科學(xué)進(jìn)展》2023-2024學(xué)年第二學(xué)期期末試卷
- 徐州工業(yè)職業(yè)技術(shù)學(xué)院《教學(xué)能力訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 中信證券公司融資融券業(yè)務(wù)方案設(shè)計(jì)
- SZDBZ 194-2016 公園設(shè)施維護(hù)技術(shù)規(guī)范
- DBJ04T 289-2020 建筑工程施工安全資料管理標(biāo)準(zhǔn)
- 化工設(shè)計(jì)知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋浙江大學(xué)
- 《建筑構(gòu)造與識(shí)圖》課程標(biāo)準(zhǔn)
- 2025年保健食品從業(yè)人員培訓(xùn)考試試題
- 2025年貴州盤(pán)江精煤股份有限公司招聘筆試參考題庫(kù)含答案解析
- 2024年中考數(shù)學(xué)復(fù)習(xí):中點(diǎn)模型專(zhuān)項(xiàng)練習(xí)
- 旅行社企業(yè)章程范本
- 2025年寧波余姚市直屬企業(yè)招招聘筆試參考題庫(kù)含答案解析
- 《心理健康測(cè)試》課件
評(píng)論
0/150
提交評(píng)論