matlab
是由math works
公司於1984
年推出的數值計算及圖形處理軟體,可以實現數值分析、優化、統計、偏微分方程數值解、自動控制、訊號處理、影象處理等若干領域的計算和圖形顯示功能。其中,控制系統工具箱的集成為設計和分析各種複雜的控制系統提供了有效的方法和途徑。
但是,由於
matlab
開發平台的侷限性,在其上面開發的程式不能脫離
matlab
執行環境,因而在處理一些實際應用問題時顯得靈活性不足,而
vc++
則在一定程度上能夠彌補這一漏洞,因此,現將二者結合共用,各獻其長,可以為科研工作和工程開發提供了更為強大的技術支援。
1、matlab與vc
混合程式設計的實現方法
matlab
作為控制系統設計的一種通用工具,它可以和
vc方便的進行連線。一般而言,
matlab與vc
混合程式設計的實現方法主要有以下三種方法:(
1)通過引擎(
engine),
採用客戶機伺服器的計算模式,通過
window
的activex
通道和matlab
進行連線。具體應用時,往往在
vc中設計程式框架,以編譯的程式作為前端客戶機;通過呼叫
matlab
引擎在後台實現與伺服器的連線,實現動態通訊(
2)應用
matlab
數學函式庫,
matlab
中包含了內容豐富的函式庫,而且還提供了與
vc的數學函式介面,使用者可以方便的在vc的
ide(整合開發環境)中呼叫。(
3)通過
dll實現vc與
matlab
的混合程式設計。
dll是乙個可執行的二進位制檔案。把很多通用的功能放在
dll中,可以供多個應用程式呼叫,這樣可以很好的減少外部儲存空間的占有量,並實現**的共享
[2]。在上述三種方法中,第一種方法對呼叫
matlab
的工具箱很實用,所有在進行控制系統的設計和分析時,一般都是通過呼叫
matlab
引擎(engine
)來實現的。本文主要介紹採用通過引擎(
engine
)來實現vc與
matlab
的混合程式設計。
2、matlab
引擎簡介
matlab
引擎是matlab
提供的一系列程式的結合,它允許使用者在自己的應用程式中對
matlab
進行呼叫,將
matlab
作為乙個操作引擎使用,使其在後台執行。一般
matlab
引擎採用客戶機
/ 伺服器
(client/ sever)
計算方式,就是一種把應用處理負載分布到客戶機和伺服器上的一種計算模式,客戶機和伺服器既可以是存在於同一臺計算機,也可以通過網路來實現資訊共享。一般情況下,客戶機是執行前端軟體的
pc機,並且知道如何與伺服器通訊,伺服器與此相對應,是接收請求資訊,並採取相應行的機器。由於客戶機和伺服器共同承擔處理負載,使系統總體效能大為提高。在實際應用過程中,把
vc的c語言或
c + +
語言的程式作為前端客戶機程式,它從
matlab
引擎接收資料資訊
,並與引擎傳遞命令的資料資訊。表
1是幾種常用的
matlab
引擎呼叫函式。
表1 matlab
引擎常用呼叫函式
通過matlab
引擎使用者可以完成以下任務:首先,可以將
matlab
作為乙個功能強大的和可程式設計的數學函式庫,呼叫
matlab
中的大量的數學計算函式,完成複雜的計算任務;其次,可以為乙個特定的任務構建乙個完整的系統,前台的使用者介面用高階語言編寫,後台的計算任務由
matlab
引擎來完成;最後,使用者不但可以在本地計算機上呼叫
matlab
引擎,而且還可以通過網路呼叫其它計算機上的
matlab
引擎,這樣可以很好的實現資源的共享和作業的分工合作。
3、matlab
引擎實現vc和
matlab
混合程式設計的步驟
要想在vc
整合環境下利用
matlab
引擎實現vc和
matlab
的混合程式設計,一般需要經過以下幾個必要的步驟:
(1)visual c++6.0
編譯環境的設定:通過選單
tools/ options
,開啟visual c++6.0
設定屬性頁,進入
directorie
頁面,在
show directories for
下拉列表中選擇
include files
,新增路徑:d:
/matlab6p5/extern/include
(在matlab
的安裝路徑下);再選擇下拉列表中的
library files
,新增路徑:d:
/matlab6p5/extern/ lib/win32/microsoft/msvc60
(在matlab
的安裝路徑下)。編譯環境只需設定一次。
(2)新增庫檔案
: 通過選單
projects|settings
,進入link
頁面,在
object/library modules
框中,新增庫檔名:
libmx.lib
、libmat.lib
、libeng.lib
。每個新的工程檔案都要單獨新增庫檔案。
(3)在使用
engine
函式的程式標頭檔案中包含如下兩個標頭檔案:
#include "engine.h"
#include
(4)在應用程式中新增呼叫
matlab
引擎的程式**:
以上步驟是對vc與
matlab
混合程式設計的編譯環境進行設定,在完成了以上基本步驟後就可以利用
matlab
引擎庫函式
engevalstring
來呼叫matlab
的內建函式了。
根據上面的方法,下面通過乙個具體的實力來說明如何實現vc與
matlab
混合程式設計、它們之間的資料通訊以及
vc環境下對
matlab
命令的呼叫。
首先,利用
vc++6.0
的mfc
建立乙個單文件結構的應用程式,加入乙個選單資源,為其對映相應的功能函式;
其次,根據
matlab
引擎實現vc和
matlab
的混合程式設計步驟(見第三部分)為程式設定相應的編譯環境並新增連線庫函式;
然後,呼叫
matlab
的內建函式和命令,主要編寫程式**如下:
最後,新增標頭檔案:
#include "matlab.h"
編譯執行,就可以得到如(圖
1)所示的結果。
1 呼叫
matlab
引擎輸出結果
上面例子是vc和
matlab
的混合程式設計的乙個簡單應用,在實際的數值計算,控制系統開發等工程應用中,可以很好的利用vc和
matlab
的混合程式設計技術,從而簡化應用程式的開發工作量。
vc 呼叫matlab計算引擎
文中使用是vc6.0和matlab 7 x 1.在vc中 工具 選項 目錄 代表matlab安裝目錄 a.目錄組合框中選擇include files,新增 matlab extern include b.然後選擇library files,新增 matlab extern lib win32 mic...
matlab呼叫c 函式
經常會遇到乙個問題,就是怎麼用matlab來呼叫已經寫好的c 下面就學習一下。首先要明白呼叫c 需要用到mex,他主要和matlab的主要介面,介面的主要入口為如下函式 void mexfunction int nlhs,mxarray plhs,int nrhs,const mxarray prh...
C 呼叫Matlab函式
開發環境 visual studio 2019,netframework 4.5,matlab 2018b 基本思路 將.m檔案 matlab函式 打包為.dll檔案以供c 呼叫 matlab端操作 編寫matlab函式 function x linear equation solve a,b 求解...