當前位置:首頁 » 編程軟體 » matlab與vc混合編程

matlab與vc混合編程

發布時間: 2022-07-04 23:57:21

㈠ 如何脫離MATLAB工作環境,實現MATLAB與Visual Basic語言的混合編程

脫離MATLAB工作環境,實現MATLAB與VisualBasic語言的混合編程

以下討論是在MATLAB7.0軟體和vc++6.0軟體環境中進行:
一、將MATLAB的.m文件編譯成.exe文件,實現MATLAB與Visual Basic語言的混合編程
1、將 \MATLAB7\toolbox\compiler\deploy\matlabrc.m 中的81行 set_param(0,'PaperType',defaultpaper)
和82行set_param(0,'PaperUnits',defaultunits)
注釋掉,或者乾脆刪掉,否則,在沒有安裝MATLAB的機子上運行MATLAB與VisualBasic語言混合編成的程序時,會出現:「Undefinedcommand/function 'set_param'」的錯誤。
2、在Matlab7 的命令窗口運行下列命令:rehash toolboxcache
完成工具箱載入和更新。
3、在Matlab7 的命令窗口運行下列命令:
Mcc –m ***.m
將MATLAB的.m文件(M文件必須以Function開始,即必須是函數文件)編譯成.exe文件,將編譯生成的.ctf文件和.exe文件拷貝到VB工程的目錄中,他們是脫離matlab環境運行必需的文件;
4、在VB工程中用下列語句對MATLAB的.m文件編譯成的.exe文件進行調用:
lTask = Shell("rt2.exe",vbHide)
hProc= OpenProcess(PROCESS_QUERY_INFORMATION, False, lTask)
IflTask = 0 Then MsgBox "程序執行失敗"
Do
GetExitCodeProcess hProc, lExit
DoEvents
LoopWhile lExit = STILL_ACTIVE
5、將VB工程進行打包,打包時,要將在MATLAB中編譯生成的.ctf文件和.exe文件添加到VB工程包中,他們是脫離matlab環境運行必需的文件;
6、將打包好的VB工程安裝包拷貝到客戶計算機中,並將matlab7\toolbox\compiler\deploy\win32下的MCRInstaller.exe程序也一起拷貝到客戶計算機中。
7、在客戶計算機中,運行程序:MCRInstaller.exe,將matlab compiler runtime安裝到客戶計算機中。注意:安裝目錄必須位於它所在的文件夾
8、運行VB工程安裝包中的setup程序,進行VB工程的程序安裝;
至此,在客戶機中,即可正常運行MATLAB與Visual Basic語言混合編成的程序。
注意事項:
1、在VB工程所在目錄中,不能有其它的.dll文件存在,否則在客戶機中運行MATLAB與Visual Basic語言混合編成的程序時,會出現下列錯誤提示:
「Warning:Failed to startthe Java Virtual machine.」
「Warning:Disabling Javasupport.」
「Undefined function orvariable 『matlabrc』.」
二、將MATLAB的.m文件編譯成.dll文件,實現MATLAB與Visual Basic語言的混合編程
1、將 \MATLAB7\toolbox\compiler\deploy\matlabrc.m 中的81行 set_param(0,'PaperType',defaultpaper)
和82行set_param(0,'PaperUnits',defaultunits)
注釋掉,或者乾脆刪掉,否則,在客戶機中運行MATLAB與Visual Basic語言混合編成的程序時,會出現:「Undefined command/function 'set_param'」的錯誤。
2、在Matlab7 的命令窗口運行下列命令:rehash toolboxcache
完成工具箱載入和更新。
3、安裝vc++6.0軟體,為Matlab編譯器的安裝和配置做准備;
4、在Matlab7 的命令窗口運行下列命令:
mbuild –setup
對Matlab的編譯器進行安裝和配置;
5、在Matlab中創建COM組件
用Matlab COM生成器創建COM組件,包括4個步驟,即創建工程、管理m文件、生成組件、打包和分發組件。
在Matlab中創建COM組件步驟如下:
(1) 創建工程。在Matlab命令窗中鍵入comtool命令,調用Matlab編譯器,打開Matlab COM Build主窗口。在該窗口中,選擇File→New Project,創建一個新的工程,在此對話框中對新工程進行設置,輸入組件名和類名,選擇合適的編譯器。
(2) 管理m文件。單擊「AddFile」按鈕,添加編寫好的M函數文件(M文件必須以Function開始,即必須是函數文件)。
(3) 生成組件。使用Build--àCom object菜單,創建COM組件,將MATLAB的.m文件編譯成.dll文件。
(4)打包和分發組件:編譯成功並通過測試後,就可以把有關文件打包和分發給目標器。單擊 「Component」→」Package Component」,創建自解壓可執行程序。注意:在使用Component--àPackageComponent菜單,生成.exe文件時,要將「includeMCR」前的選擇框選中,使生成的.exe文件中能包含MCRInstaller.exe程序。
6、將編譯生成的.ctf文件和.dll文件以及.exe文件拷貝到VB工程的目錄中;
7、創建VB工程並調用COM組件新建「標准EXE」工程,進入VB編程環境,在「工程」菜單中單擊「引用」選項, 在列表中選中第5步中生成的這些組件,以及添加MWComUtil 7.0 Type Library,單擊「確定」按鈕。
在VB工程引用這些組件後,需按照以下步驟來調用Matlab文件:
Dim rt2 As rt2_1.rt2_1class '聲明一個COM組件
Set rt2 = New rt2_1.rt2_1class
Call rt2.rt2 '執行rt2_1_1_0.dll文件
8、將VB工程進行打包,打包時,要將在MATLAB中編譯生成的.ctf文件和.dll文件以及.exe添加到VB工程包中;
9、在客戶計算機中,運行第5步中生成的.exe程序,對第5步中生成的.dll動態鏈接庫進行注冊,並自動運行MCRInstaller.exe程序,將matlab compiler runtime安裝到客戶計算機中。
10、將打包好的VB工程安裝包拷貝到客戶計算機中,運行VB工程安裝包中的setup程序,進行VB工程的程序安裝;
至此,在客戶機中,即可正常運行MATLAB與Visual Basic語言混合編成的程序。
注意事項:
1、VB編譯生成的MATLAB與Visual Basic語言混合編成的exe應用程序不能簡單的移植,必須要打包,在打包時應帶上dll文件,然後將打包好的VB工程安裝包拷貝到客戶機中,運行VB工程安裝包中的setup.exe安裝程序,進行VB工程的安裝,VB工程安裝完成後,再在客戶機中,運行第5步中生成的.exe程序,就可以避免出現下列各種錯誤提示:
(1)「Warning:Failedto start the Java Virtualmachine.」
「Warning:Disabling Javasupport.」
「Undefined function orvariable 『matlabrc』.」
(2)「Automation錯誤」或者「自動化錯誤」
(3)「運行時錯誤』429』:ActiveX部件不能創建對象」
(4)「MCR instance isnot available.」
2、在VB工程所在目錄中,除了包含第5步中生成的.dll動態鏈接庫文件外,不能有其它的.dll文件存在,否則在客戶機中運行MATLAB與Visual Basic語言混合編成的程序時,會出現下列錯誤提示:
「Warning:Failed to startthe Java Virtual machine.」
「Warning:Disabling Javasupport.」
「Undefined function orvariable 『matlabrc』.」
3、如果直接將Vb工程程序拷貝到客戶機中,而不是通過安裝Vb工程程序,來運行MATLAB與VisualBasic語言混合編成的程序時,會出現:「Automation錯誤」或者「自動化錯誤」的錯誤提示,這時可以通過下列方法之一解決:
(1)在客戶機中運行第5步中生成的.exe程序,對第5步中生成的.dll動態鏈接庫進行注冊,就可以解決「Automation錯誤」或者「自動化錯誤」引起的程序運行異常。
(2)在客戶機中直接運行regsvr32.exe程序,對第5步中生成的.dll動態鏈接庫進行注冊,也可以解決「Automation錯誤」或者「自動化錯誤」引起的程序運行異常。
4、如果在客戶機中,沒有運行第5步中生成的.exe程序,對第5步中生成的.dll動態鏈接庫進行注冊,那麼在客戶機中運行MATLAB與Visual Basic語言混合編成的程序時,就會出現:「運行時錯誤』429』:ActiveX部件不能創建對象」的提示,或者出現:「Automation錯誤」或者「自動化錯誤」的錯誤提示。
5、如果在客戶機中運行MATLAB與Visual Basic語言混合編成的程序時,出現:「MCR instance isnot available.」的錯誤提示時,可以通過將打包好的VB工程安裝包拷貝到客戶計算機中,運行VB工程安裝包中的setup程序,進行VB工程的程序安裝,就可以解決這種錯誤。

㈡ matlab 與 VC++ 混合編程矩陣傳參

解決方法有三種:
1.卸載vs,安裝較低的版本
2.卸載MATLAB,安裝2013a。
3.我以前看見過一個補丁,具體你去網路之,不過希望不大,我記得他那個解決版本較低的vs和MATLAB,不知道對你這個的兼容性。
ps:給你一個參考,我的混合編程配備是MATLAB2010a+vs2008。
如果有不懂的,可以繼續提問,如果有幫助

㈢ 請問VC+matlab混合編程,可以把做好的程序放在沒有裝matlab的機子上去運行,怎麼辦啊

將matlab程序用matcom軟體編譯成動態鏈接庫文件(*.dll)嵌入到VC程序。也可以使用matlab自帶的complier編譯器將matlab程序編譯成C程序嵌入到VC程序。這兩種方法都可以脫離matlab運行

㈣ 有用matlab和vc聯合編程的嗎

通信要用到MATLAB的,不過我學的不深,看下面答案是否正確,你可以試一試,我的認為是要用到命令行,一般情況下,Simulink是類似框圖圖形化的模擬方法;而在通過引擎方式將Simulink同VC相結合時,模擬的每個操作是通過調用engEvalString執行一個用字元串表示的MATLAB表達式(Simulink模擬命令)來實現的。因此,要掌握Simulink&VC混合編程,首先需要掌握Simulink的命令行模擬方式:
[t,x,y]=sim('modelname')
利用對話框參數進行模擬,返回輸出矩陣;
[t,x,y]=sim('modelname',
timespan,
options,
ut)
利用輸入參數進行模擬,返回輸出矩陣;
[t,x,y1,y2,...yn]=sim('modelname',
timespan,
options,
ut)
利用輸入參數進行模擬,返回逐個輸出;
不知道樓主是否已經學了《矩陣分析》啊!好強耶!

㈤ 哪位大俠知道vc和matlab混合編程

MATLAB 與Visual C++結合的方法有多種,但其實用程度與范圍不同。目前主要有以下三種方式。
1. 通過Matlab引擎(Engine)
採用客戶機/伺服器(Client/Service)的計算模式,通過windows的ActiveX通道和MATLAB進行結合。MATLAB引擎採用客戶機和伺服器計算方式,提供了一組Matlab API函數,用戶不必關心Matlab引擎是如何實現的,只要調用這些函數即可。正是通過這些API函數實現應用程序進程之間的傳遞函數,從而實現Matlab與VC的混合編程。具體應用中,往往在VC中設計程序框架, VC的C語言或C++語言的程序作為前端客戶機,它向Matlab引擎傳遞命令和數據信息,通過調用MATLAB引擎在後台與MATLAB伺服器建立連接,實現動態通信。這種處理方法不要求鏈接整個Matlab,只需嵌入必要的Matlab引擎庫,節省了大量的系統資源,使應用程序整體性能更好,處理效率更高,但這種混合編程的方法需要MATLAB在後台適時運行不能脫離Matlab環境,否則影響了程序的通用性,因此這種方法在實際開發過程中很少採用。
2. 通過DLL實現混合編程
DLL是動態鏈接庫的英文縮寫,是一個可執行的二進制文件。把很多通用的功能放在DLL 中,可供多個應用程序調用,而不是每個應用程序在連接時都要增加一個庫中目標代碼的拷貝。通過Matlab自帶的Compiler編譯器,可以把由Matlab編寫的m 函數文件編譯成動態鏈接庫(dl1)。或者通過Matlab提供的組件功能,運用VC+十向導自動生成m文件的動態鏈接庫。在VC程序中調用封裝的函數,實現數值演算法的運用。這種方法只需在開發和發布中包含其生成的動態庫就可以了,可以使程序脫離Matlab可以整體減少文件外部存儲空間的佔有量,並實現了代碼共享。
3.使用COM技術實現混合編程
COM技術是一種應用廣泛、方便靈活的方法,是利用MATLAB提供的Deploy Tool工具實現MATLAB與C/C++的混合編程。COM給軟體開發人員提供了一種共享二進制代碼的方法,這種共享並不局限於某種編程語言。

㈥ vc和matlab 混合編程

你說的不夠詳細,如果只是貼圖片的話可以考慮截圖,或者調用Matlab的圖片保存功能,然後再把這個保存的圖片貼入VC里。

㈦ matlab與C++混合編程(高手請進)

源代碼:
#include "D:\extern\include\mat.h"

void main() {
MATFile *pMF; // mat文件
mxArray *pA; // 矩陣指針
double *A; // 數據指針
int i, j;
// 打開一個test.mat文件,只寫,如果不存在就新建,否則刪除重建
pMF = matOpen("test.mat", "w");
// 新建一個12*4的矩陣只有實部(在MATLAB里矩陣都是復矩陣)
pA = mxCreateDoubleMatrix(12, 4, mxREAL);
// 給這個矩陣命名為x
mxSetName(pA, "x");
// 讓指針Array指向這個矩陣的數據
A = mxGetPr(pA);
// 在VC里數組是按行排放的,在MATLAB里矩陣是按列排放的,)
for (i = 0; i < 12; i++)
for (j = 0; j < 4; j++)
A[j * 12 + i] = i + 0.001 * j;
// 將矩陣寫到文件test內
matPutArray(pMF, pA);
// 釋放矩陣空間
mxDestroyArray(pA);
// 關閉文件
matClose(pMF);
}

㈧ 關於matlab與vc混合編程

nargout是輸出參數,改:

isOK=mlfSignal(0,&y); 為:

isOK=mlfSignal(1,&y);

試試吧。。

㈨ matlab與c/c++混合編程,急!

目前常用的的是4.5版本,包含matlab.h頭文件,和v4501v.dll
ago4501兩個動態庫即可。
具體可參考matcom幫助或者留言給我

熱點內容
解壓到當前文件夾右鍵 發布:2024-04-26 03:57:08 瀏覽:979
html5android教程視頻下載 發布:2024-04-26 03:09:59 瀏覽:867
伺服器的描述是什麼 發布:2024-04-26 03:08:32 瀏覽:394
個人加密 發布:2024-04-26 03:01:23 瀏覽:520
linuxusbgadget 發布:2024-04-26 02:52:54 瀏覽:304
我的世界空島世界伺服器地址 發布:2024-04-26 01:39:08 瀏覽:248
尼爾機械紀元加密 發布:2024-04-26 01:37:11 瀏覽:867
在控制台輸出sql語句 發布:2024-04-26 01:08:12 瀏覽:432
動畫java 發布:2024-04-26 01:02:40 瀏覽:12
得力文件夾5302 發布:2024-04-26 00:21:32 瀏覽:91