




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、電子科技大學MATLAB應用程序接口應用程序接口電子科技大學MATLAB 混合編程的混合編程的3個例子個例子1.MAT文件的讀寫2.C語言調用MATLAB編譯器生成的DLL模塊3.Matlab調用C語言編寫的MEX文件電子科技大學MAT文件的讀寫文件的讀寫MAT文件由128bytes MAT 文件頭和尾隨其后的數據單元組成,每個數據單元頭部都有一個8字節的標志,表示這個數據單元里有多少數據,以及以什么方式讀寫這里的數據。一般讀寫方式有16位、32位、浮點或別的形式。MAT文件的結構如右圖電子科技大學MAT文件的讀寫文件的讀寫MATLAB 提供的用于操作 MAT 文件的 API 函數封裝于兩個標
2、準庫文件中:libmat.lib 和 libmx.lib。前者用于對MAT文件的操作,后者用于對MAT文件中矩陣的操作。這兩個庫文件對于不同語言和不同版本的編輯器而有所不同,存放在binwin32相應子文件夾中。此外,在externinclude 中有與前面兩個標準庫文件對應的.def 文件:libmat.def、libmx.def。其導出函數的原型位于同一目錄下的 mat.h和 matrix.h中,mat.h包含了 MAT文件的創建、 讀寫等函數的定義;matrix.h包含了MATLAB中基本的數據類型、 矩陣的定義和操作方法。電子科技大學MAT文件的讀寫文件的讀寫一個實例小程序,用于將BC
3、I腦電數據CNT格式轉變為MAT格式數據電子科技大學C語言調用語言調用MATLAB編譯器生成的編譯器生成的DLL模塊模塊09年腦電麻醉深度檢測項目電子科技大學C語言調用語言調用MATLAB編譯器生成的編譯器生成的DLL模塊模塊09年腦電麻醉深度檢測項目流程圖:信號處理模塊:function ADep=AD(EEG,SampleRate)數據讀取/分段處理和顯示綜合評估復雜度特征爆發抑制特征雙頻指數特征輸出麻醉深度指標*_matout.datWFDB數據Config.ini控制檢測電子科技大學C語言調用語言調用MATLAB編譯器生成的編譯器生成的DLL模塊模塊VC編寫的界面調用MATLAB編寫的
4、函數function ADep=AD(EEG,SampleRate)電子科技大學C語言調用語言調用MATLAB編譯器生成的編譯器生成的DLL模塊模塊MATLAB編譯器的配置電子科技大學C語言調用語言調用MATLAB編譯器生成的編譯器生成的DLL模塊模塊MATLAB編譯器MCC 編譯一個C動態庫電子科技大學C語言調用語言調用MATLAB編譯器生成的編譯器生成的DLL模塊模塊MATLAB編譯器MCC 編譯一個C+動態庫mcc -B cpplib:DatComp DatProcess.m電子科技大學C語言調用語言調用MATLAB編譯器生成的編譯器生成的DLL模塊模塊MATLAB編譯器MCC 編譯一個
5、C+動態庫mcc -B cpplib:DatComp DatProcess.m電子科技大學補充:函數庫的簡介補充:函數庫的簡介 對函數庫的鏈接是放在編譯時期(compile time)完成的.所有相關的對象文件(object file)與牽涉到的函數庫(library)被鏈接合成一個可執行文件(executable file) (完整復制或提供地址)(1).h與.lib是必須的,dll是運行時需要的。 (2)靜態庫只有lib文件,那么這個lib文件是靜態編譯出來的,索引和實現都在其中。 (3)動態庫有兩個文件,一個是引入庫(.LIB)文件,一個是DLL文件。引入庫文件包含被DLL導出的函數的名
6、稱和位置,DLL包含實際的函數和數據,應用程序使用LIB文件鏈接到所需要使用的DLL文件,庫中的函數和數據并不復制到可執行文件中,因此在應用程序的可執行文件中,存放的不是被調用的函數代碼,而是DLL中所要調用的函數的內存地址,這樣當一個或多個應用程序運行是再把程序代碼和被調用的函數代碼鏈接起來,從而節省了內存資源。電子科技大學C語言調用語言調用MATLAB編譯器生成的編譯器生成的DLL模塊模塊對 CB的編譯器環境進行設置。 在Project-options-directory里面設置include和lib的路徑,源代碼中加入頭文件 Datcomp.h,項目中加入 libmat.lib libm
7、x.lib mclmcrrt.lib 以及 MCC生成的Datcomp.lib電子科技大學C語言調用語言調用MATLAB編譯器生成的編譯器生成的DLL模塊模塊對 VC的編譯器環境進行設置。 在Tool-options-directory里面設置include和lib的路徑,項目中加入 libmat.lib libmx.lib mclmcrrt.lib 以及 MCC生成的Datcomp.lib電子科技大學C語言調用語言調用MATLAB編譯器生成的編譯器生成的DLL模塊模塊電子科技大學Matlab調用調用C語言編寫的語言編寫的MEX文件文件MEX文件的源程序由兩個部分組成:(1)入口子程序 mex
8、Function。其作用是在MATLAB系統與被調用的外部子程序間建立通信聯系。函數中有四個參數nlhs、plhs、nrhs和prhs。函數原型如下:void mexFunction(int nlhs, mxArray *plhs,int nrhs, const mxArray *prhs)這里nlhs是輸出數據的個數plhs是指向mxArray(MATLAB中所有數據都由mxArray定義)的輸出數據的指針nrhs是輸人數據的個數,prhs是指向mxArray的輸入數據的指針。(2)用戶子程序。包含MEX文件中完成計算功能的程序代碼,計算子程序可以是普通的C語言程序按照C語言規則編寫即可。計
9、算子程序由入口子程序調用。電子科技大學Matlab生成生成MEX文件:文件:mex setupmex getname.c生成文件后綴生成文件后綴:*.mexw32電子科技大學MATLAB 混合編程的注意事項混合編程的注意事項選擇合適的MATLAB版本CB 推薦 matlab 2007B電子科技大學MATLAB 混合編程的注意事項混合編程的注意事項C語言中使用這種調用形式最好try MRC_FUNCTION()catch (const mwException& e) strtemp.sprintf(matlab error:%sn,e.what(); ShowMessage(strtemp);MRC版本必須與編譯所用的MATLAB匹配編譯時使用不同文件名,且盡量按照MATLAB的文件命名要求,如mcc -B cpplib:DatComp DatProcess.m電子科技大學M
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國冰柜化霜加熱器市場調查研究報告
- 2025年中國休閑體育用品市場調查研究報告
- 2025年中國不銹豪華鉤市場調查研究報告
- 2025年中國USB卡市場調查研究報告
- 《2025年促銷禮品采購合同》
- 2025二級建造師建設工程施工管理考點知識:合同價款約定與工程計量細節
- 2025年商業物業租賃合同范本
- 2025年新版城市戶籍員工雇傭合同
- 課程類型的試題及答案解析
- 2025簡易個人租賃合同
- 安徽匯宇能源發展有限公司25萬噸年石腦油芳構化項目環境影響報告書
- 新《行政處罰法》亮點ppt解讀
- DB35T 2092-2022 高速公路邊坡工程養護技術規范
- LY/T 1970-2011綠化用有機基質
- 部編人教版五年級語文下冊第18課《威尼斯的小艇》精美課件
- 消防(電動車)火災安全知識課件
- VSM(價值流圖中文)課件
- 上海交通大學醫學院附屬仁濟醫院-日間手術管理信息化實踐與發展
- 核電站入廠安全培訓課件
- 節日主題班會 《感恩母親節》教學課件
- 新加坡sm214th面經44緋的同學
評論
0/150
提交評論