《應用程序接口》PPT課件
《《應用程序接口》PPT課件》由會員分享,可在線閱讀,更多相關《《應用程序接口》PPT課件(19頁珍藏版)》請在裝配圖網上搜索。
1、技術凝聚實力技術凝聚實力專業創新出版專業創新出版第20章 應用程序接口l作為一款優秀的工程計算軟件,MATLAB不僅擁有強大的功能和友好的界面支持,還具有很好的開放性、可擴展性,主要表現在:豐富的工具箱(Toolbox)資源可以適應各學科、各領域的需要,并且用戶可以創建自己的工具箱;廣泛的應用程序接口(API),能夠與外部應用程序實現“無縫”結合等。l本章針對MATLAB的C、FORTRN應用程序接口,主要介紹以下幾方面內容:lC/FORTRAN語言中的MATLAB數據結構mxArray;lMATLAB利用MEX文件調用C/FORTRAN函數;lC/FORTRAN通過MATLAB引擎(Engi
2、ne)調用MATLAB函數;l創建能夠讀寫MAT文件的C程序,實現C與MATLAB的數據通信。技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.1 mxArray數據結構l數組是MATLAB程序基本的數據組織形式,也是大部分MATLAB運算的基本運算單位。MATLAB中數組與C/FORTRAN中數組的存儲方式是不同的,而且MATLAB和C/FORTRAN對基本數據類型,如雙精度類型浮點數、整數類型、字符類型等的定義也是不同的。為了能夠在C中表示MATLAB數據結構,MATLAB提供了一種特殊的C語言結構mxArray。本節首先簡要介紹MATLAB和C/FORTRAN中數組存儲方式的不同,然
3、后詳細討論mxArray數據結構及相關的操作函數mx函數。技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.1.1 MATLAB和C/FORTRAN中的數組l數組是MATLAB數據組織的基本形式,這里首先要澄清兩個概念,即數據類型和數據結構。MATLAB的數據類型,諸如整型、浮點型、邏輯型等都是數值類型;另外還有字符、字符串、對象等非數值類型。數據結構是指數據元素的組織方式,基本的有數組,另外還有元胞、構架等復雜數據結構,每個數據元素都有對應的數據類型。lMATLAB按列主序組織數組中的數據元素,例如對一個3階魔術矩陣A,在MATLAB命令窗口輸入以下代碼。l a=magic(3)l運行結
4、果如下。la=l 8 1 6l 3 5 7l 4 9 2技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.1.2 mxArraylmxArray是一種C語言結構體,該結構體的定義在中,下面列出了mxArray定義相關的代碼:lmxArray結構體由很多字段組成,這些字段保存了MATLAB數據的所有信息:l數據類型;l數組維數;l數組大小,行數、列數;l數據主體;l如果是數值對象,則保存數據是實數還是復數;l如果是稀疏矩陣,則保存矩陣中非零元素的個數和索引。技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.1.3 mx函數l為了方便mxArray數據對象的操作,MATLAB專門提供了一組
5、mxArray數據操作函數,即mx函數。利用mx函數可以創建和訪問mxArray數據對象,本小節首先介紹幾類主要mxArray數據對象的創建,其間會涉及相應mxArray數據對象的訪問和賦值操作,隨后討論了mxArray數據對象相關的內存操作。l下面對兩類常用的mxArray數據對象的創建及相關的訪問、賦值操作進行詳細介紹,這兩類mxArray數據對象是:l數值數組;l邏輯數組。技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.2 C/FORTRAN MEXlC/FORTRAN語言應用于工程、科學等領域具有較長的歷史,積累了大量可用的代碼,通過MEX文件,可以直接將這些已有的C/FORTR
6、AN代碼集成到MATLAB應用中,而且能夠彌補MATLAB本身的一些不足,如對計算機低層硬件的操作、網絡操作等。l本節首先簡要介紹C MEX文件的結構,為了創建C MEX文件,需要對MATLAB 編譯器作相關的設置MEX配置,和分別以示例的形式討論了C MEX和FORTRAN MEX的創建方法。l注意:MEX是MATLAB Compiler 3等早期MATLAB編譯器的功能,的編譯器(MATLAB Compiler 4)已不能支持MEX文件。技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.2.1 MEX文件簡介lMEX即為MATLAB和Executable的縮寫,一般地,MEX文件由C語
7、言或FORTRAN語言開發,經過編譯后可以被MATLAB直接調用。在使用上MEX文件與M文件相似,但比M文件具有更高的執行優先級。利用MEX文件,用戶可以完成:l在MATLAB直接使用已有的C/FORTRAN代碼;l隱藏算法的細節;l利用C語言對低層硬件進行操作,擴展MATLAB的能力。技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.2.2 配置MEXlMEX文件一般由C/FORTRAN語言開發,然后利用MATLAB Compiler將C/FORTRAN源代碼編譯為MEX文件。為此需要對MATLAB Compiler作相應的配置,配置過程與本書第19章的mbuild配置相似,即是選擇合適
8、的C/FORTRAN編譯器。在MATLAB命令窗口輸入以下指令:l mex setupl運行結果如下。lPlease choose your compiler for building external interface(MEX)files:lWould you like mex to locate installed compilers y/n?技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.2.3 C MEXl前面對MEX文件的結構、MATLAB Compiler的MEX配置進行了詳細介紹,本小節通過一個簡單的例子說明創建C MEX應用程序的完整過程。技術凝聚實力技術凝聚實力專業創
9、新出版專業創新出版20.2.4 FORTRAN MEXl作為專業的科學計算程序語言,FORTRAN在數值計算方面具有很多優于C語言的性質,所以FOTRAN MEX在MATLAB外部接口編程中也經常遇到。lFORTRAN MEX的創建方法與C MEX非常相似,下面就以上一小節相同的例子介紹FORTRAN MEX的創建過程。技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.3 MATLAB引擎l前面介紹了利用MEX文件在MATALB集成已有的C/FORTRAN代碼。盡管MATLAB在科學計算、工程應用領域具有無可比擬的優勢,但在復雜用戶界面、底層硬件設備操作等方面都有較大的缺陷。一種可行的方案
10、是在C/C+等高級語言中調用MATLAB函數實現后臺計算,而用戶界面、底層硬件操作由C/C+等完成。為了能夠在其他高級語言中調用MATLAB函數,MATLAB提供了多種手段完成,其中計算引擎是一種常用也是最容易實現的一種方法。l本節首先簡要介紹了MATLAB引擎應用程序的工作原理和基本結構,第節詳細討論了引擎函數(eng函數),最后以一個示例介紹設計MATLAB引擎應用程序的完整過程。技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.3.1 MATLAB引擎簡介lMATLAB引擎應用程序的思路與MEX文件相反,MEX文件是在MATLAB環境下調用C/FORTRAN程序,而MATLAB引擎是
11、在C/FORTRAN中調用MATLAB函數。lMATLAB引擎應用程序一般由C/FORTRAN語言開發,運行時利用某種通信機制將計算任務請求提交給后臺的MATLAB進程,后臺MATLAB進程完成計算任務后將結果返回給C/FORTRAN主程序。在Windows平臺下,這種通信機制是利用COM應用接口IEngine完成的,圖20.5顯示了MATLAB引擎應用程序的工作原理。技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.3.2 MATLAB引擎函數lMATLAB引擎應用程序通過在C/FORTRAN語言中調用一組MATLAB API函數,實現客戶應用程序與MATLAB環境的交互,這些函數以en
12、g為前綴。C/FORTRAN通過MATLAB引擎函數打開或關閉MATLAB引擎,從MATLAB中獲取數據或向MATLAB寫入數據及執行MATLAB命令等操作。MATLAB引擎函數函 數 名功 能可否被C調用可否被FORTRAN調用engOpen打開MATLAB引擎engClose關閉MATLAB引擎engGetVariable從MATLAB后臺會話中讀取變量engPutVariable將變量寫入MATLAB后臺會話中engEvalString執行MATLAB命令engOutputBuffer創建MATLAB文本輸出緩存區engOpenSingleUse啟動一個非共享的MATLAB引擎engGe
13、tVisible獲取MATLAB引擎的可視屬性engSetVisible設置MATLAB引擎的可視屬性技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.3.3 MATLAB引擎應用示例l前面介紹了MATLAB引擎應用程序的基本原理、基本結構及引擎函數,下面以一個具體的例子說明創建MATLAB引擎應用程序的完整過程。技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.4 C讀寫MAT文件lMAT文件是MATLAB用于存儲數據的一種特殊二進制文件,利用MATLAB API提供的接口函數(mat函數),C/FORTRAN可以方便地讀寫MAT文件,從而實現C/FORTRAN程序和MATLAB的數
14、據通信。l本節首先簡要介紹MAT文件的結構及其在MATLAB中的應用,介紹C讀寫MAT文件的接口函數(MAT函數),最后給出了一個C讀寫MAT文件的應用示例。l說明:MATLAB為用戶提供了豐富的數據I/O接口,可以讀取各種數據文件,如文本文件、二進制文件、圖像文件、聲音文件、視頻文件等,詳細內容可以參考本書第18章。技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.4.1 MAT文件lMAT文件是MATLAB提供的用于存儲數據的一種特殊二進制文件,MAT文件能夠獨立于各種平臺,為MATLAB提供了跨平臺的數據交互能力。lMAT文件可以分為文件頭和數據主體兩部分,其中文件頭包含了一些描述性
15、的信息及相應版本、標識信息,這部分占用128個字節;數據體按照數據類型、數據長度和數據依次保存。l在MATLAB中,用戶可以通過save指令將當前工作空間中的指定變量保存至MAT文件中,當用戶需要再次使用這些變量時,可以通過load指令方便地將數據導入到當前工作空間中。技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.4.2 MAT函數l利用C讀寫MAT數據文件,需要調用MATLAB API提供的mat函數,這些函數具有C語言的格式用于MAT數據文件的打開關閉、讀寫數據等操作:lmatOpen,用于打開MAT數據文件;lmatClose,關閉MAT數據文件;lmatGetVariable,
16、讀入MAT數據文件中的變量;lmatPutVariable,將變量寫入到MAT數據文件中。技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.4.3 C讀寫MAT文件l本小節通過一個簡單的示例說明創建C讀寫MAT文件應用程序的完整過程。技術凝聚實力技術凝聚實力專業創新出版專業創新出版20.5 小結l本章針對MATLAB外部應用程序接口,主要介紹了C/FORTRAN語言與MATLAB之間的交互編程問題,通過本章的學習,讀者應掌握以下內容:lmxArray數據結構對象應用;l利用C/FORTRAN MEX實現MATLAB對C/FORTRAN函數的調用;l利用MATLAB引擎實現C對MATLAB函數的調用;l利用MAT文件實現C/FORTRAN與MATLAB的數據交互。
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。