?

Matlab接口技術應用研究

2016-03-14 19:13寶雞職業技術學院電子信息工程系721000
電子測試 2016年7期
關鍵詞:接口技術

李 雯(寶雞職業技術學院電子信息工程系,721000)

課題名稱:省職教學會的課題《基于VC和MATLAB的仿真實驗平臺的設計》課題編號:SZJYB2015033

?

Matlab接口技術應用研究

李 雯
(寶雞職業技術學院電子信息工程系,721000)

課題名稱:省職教學會的課題《基于VC和MATLAB的仿真實驗平臺的設計》課題編號:SZJYB2015033

摘要:Matlab是一種面向科學和工程計算的高級語言,可以勝任大多數的工作,但仍然具系統不友好性 的弊端,將Matlab與外部程序進行混編設計,可以有效的改善這一狀況,本文介紹了混合編程的多種方法,希望對從事程序開發讀者有所幫助。

關鍵詞:Matlab;接口技術;方式

Matlab作為應用范圍比較廣泛的數學軟件,是一個相當完整的系統,它向用戶提供了一個功能十分完善的程序設計和數據處理集成環境,用戶可以根據需要方便地編寫和擴充新的函數庫。它以矩陣運算為基礎,極少的代碼即可實現復雜的功能。但是MATLAB的M文件作為一個文本文件,不利于算法的保密,而且訪問硬件的能力差,執行效率也不高,這時候就需要研究MATI.AB接口技術,通過外部程序來實現對MATLAB的調用。如何實現其與外部程序的混合編程設計成為計算機領域關注的重點課題,現階段有兩種方法來解決這一問題:一是在MATLAB中調用其它語言編寫的代碼;二是在其他語言程序中調用MATLAB。這些技術的應用使MATLAB的使用領域在不斷的擴展,給開發者提供了靈活多變的解決問題的途徑。

1 在Matlab中調用C/C++程序的方式

在MATLAB開發環境中調用C/C++等外部程序離不開編譯器的支持,編譯器存在的價值就是將C/C++代碼編譯為MEX文件,這樣就可以將程序執行下去。MEX文件是Matlab調用C/ C++程序的主要形式,它包含有Matlab解釋器,以動態鏈接庫的形式而存在,由于數據庫Matlab版本有所不同,因而MEX文件的名稱和大小也是不同的,有的以·dll命名,有的以*·mexw 32形式而存在,還有以*·mexw64的名稱存在的,無論是以何種形式存在的MEX文件都有著裝載動態鏈接和執行動態鏈接的功能,mwlndex,mwsize,mxchar,mxlogical,mxClasslD,mxComplexity是其語言接口的代表數據類型,它通過用C/C++語言編寫代碼,然后通過Matlab編譯器將其編譯為MEX文件。而要想用C/C++語言編寫MEX文件需要解決的一個首要問題是將mexFunction函數中的Matlab與C/C++代碼模塊的數據實現順利交互,而要解決這一點就需要充分了解Matlab與C/C++代碼的結構與優勢。Matlab中的數據類型可以用mxArray來描述,包括其中所有輸入和輸出的參數,而將C/C++語言的基本數據轉換為mxArray類型就成為解決Matlab與C/C++代碼模塊進行交互的關鍵。而Matlab中所包含的API函數使這一問題的解決變成了可能,在Matlab與C/C++混合編程時候經常需要調用Matlab提供的API函數,其中以mx開頭的Matlab API函數主要是提供對mxArray進行操作的函數,而以mex開頭的Matlab API函數則提供Matlab環境后臺操作的函數。其中,以mex開頭的Matlab API函數只能在MEX文件中應用,以mex開頭的Matlab API函數可以在其他應用如從C/C++調用Matlab程序中應用。

Matlab中調用C/C++函數的另一種方式,即采用%#external語法結構。假定在Matlab函數中需要調用一個和數據采集設備密切相關的底層C/C++函數以獲得該設備采集的數據。此時,可以首先用M文件完成整個程序,需要調用的C/C++函數暫時用M函數代替,并用%#external標記。

2 在C/C++中調用Matlab的方式

使用Matlab編譯器編譯的文件,生成可獨立運行的可執行文件,為用戶提供一種最簡單的發布Matlab程序的方法。在C語言的函數中可以調用*、m函數經過Matlab編譯器編譯后的函數。以mrandplot、m生成函數。

(1)編譯mrand.m文件,生成mrandplot函數的接口函數mlfmrandplot函數。在C/C++語言函數中可以通過調用mlfmrandplot函數來達到調用mrandplot函數的目的。

(2)調用 mrandplot函數:Matlab和C/C++混合編程中經常要用到mx-API函數,本例中調用

mxcreate Double Matrix API 函數用于構造 mlfmrandplot 函數的輸入參數。

C/C++調用Matlab程序的第二種方式可以通過 Matlab 引擎直接執行 Matlab語言。Matlab程序中蘊含著大量的數學計算方式,當用戶需要使用某一公式進行數值計算時就可以通過Matlab引擎調用Matlab函數,為用戶的計算服務。大量的API函數是Matlab得以順暢運行的基礎,通過這些API函數用戶只需將數據輸入到Matlab中,Matlab引擎就可以將人工難以計算出來的數據輕松的計算出來,界面部分由C/C++語言構成,而這一切的實現都離不開Matlab環境的支持。

C/C++調用 Matlab 程序的第三種方式:將 Matlab程序編譯為C/C++ 動態鏈接庫,然后在C/C++程序中調用。通過Matlab編譯器的mcc命令,可以將Matlab *·m文件直接編譯為動態鏈接庫以供 Visual C++調用。

3 結束語

Matlab 的接口技術可以讓使用者不只是局限于一種計算工具,這些接口技術可以幫助使用者更好的利用手中的工具,結合多個工具的去處,找到解決實際問題的優秀方案。

參考文獻

[1]劉維著. 精通Matlab與c/c++混合程序設計[M]. 北京航空航天大學出版社

[2] 張亮,王繼陽編著. MATLAB與c/c++混合編程[M]. 人民郵電出版社出版

[3]呂獻忠. 匯編與C語言混合程序設計方法研究[J]. 電腦編程技巧與維護,2015,12:37-38.

李雯,女,陜西扶風人,1982年出生,碩士,高校講師,主要研究方向:電氣控制系統設計與仿真。

Matlab interface technology application research

Li Wen
(Baoji professional technology institute,Department of electronic and information engineering,721000)

Abstract:Matlab is a high-level language for scientific and engineering calculation, and can do most of the job,but still with the deficiencies of the system is not friendly,external program with the Matlab mix design,can effectively improve the situation,this paper introduces the mixed programming of a variety of methods,hope to help readers engaged in application development.

Keywords:Matlab;Interface technology;way

作者簡介

猜你喜歡
接口技術
基于MOOC+SPOC+翻轉課堂的“微機原理與接口技術”混合教學模式研究
論《單片機原理與接口技術》跨校修讀模式
高等學校計算機專業課程教學改革實踐——以匯編語言與接口技術課程為例
腦機接口技術可幫助人類克服殘疾
電力系統全網一體化暫態仿真接口技術
項目驅動式微機原理及接口技術教學方法
電子測試系統接口技術
基于高壓制備液相的多維色譜技術在中藥分離純化中的應用
中文GIS自然語言接口技術研究
機電一體化系統中的接口技術分析
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合