首先,安裝乙個matlab是必須的,在這裡說明一下(據說使用matlab6.5及以下的版本,不會出現在沒有matlab的電腦上無法使用自己軟體的問題,本人由於時間問題沒有嘗試的使用,使用後如果可以解決在其他電腦使用問題,本人會在後面更新的時候說明)
這裡介紹兩種使用matlab的方法,先介紹一下本人使用的方法:
一、直接動態呼叫matlab庫函式
1、安裝matlab
2、在vs中建立工程,然後設定工程屬性
這是對依賴庫的設定等
2、可以在專案中進行matlab的函式使用了
在使用matlab的地方,新增標頭檔案#include 「engine.h」,
在使用的部分,對matlab進行開啟引擎操作:
engine *eg;
if(!(eg = engopen(null)))
messageboxa(null, "can't start matlab engine","matlab engine",mb_ok);
建立matlab矩陣記憶體塊:
mxarray *ima;
ima=mxcreatedoublematrix(20,20,mxreal);
設定,將自己的資料拷貝到矩陣中,並在matlab中建立對應的變數:
double a[20][20]
memcpy((void *)mxgetpr(ima),(void *)a,sizeof(a));
engputvariable(eg,"im",ima);
在matlab中進行計算:
engevalstring(eg, "wn=[0.5*2 35*2]/1000");
engevalstring(eg, "[k,l]=butter(1,wn)");
engevalstring(eg, "im2=filtfilt(k,l,im)");
得到matlab中的資料,並拷貝到c++中的變數中:
imc =enggetvariable(eg,"im2");
double c[20][20];
memcpy((void *)c,(void *)mxgetpr(imc),sizeof(mxgetpr(imc))*20*20);
釋放矩陣記憶體:
mxdestroyarray(ima);
關閉引擎:
engclose(eg);
然後這個方法有乙個問題,就是需要將用到的matlab中的dll檔案拷貝到生成的版本中,dll檔案在matlab路徑的:
d:\matlab\r2015b\bin\win64
然後就算完成。
二、生成dll檔案在c++中呼叫
1、在matlab中建立m檔案,使用matlab語句生成matlab可執行語句
2、在命令中使用:mcc -w lib:lib(m檔名) 檔案.m -t link:lib ,將生成動態鏈結庫,然後在c++中就可以呼叫
3、在使用的時候也需要設定matlab鏈結庫
利用C 和Matlab混合程式設計
在c 中引用 dll 檔案 如何引用 程式設計中c 資料型別的轉換 兩者之間的函式變數的傳遞時如何實現的 需要額外新增的dllmwarray.dll 在安裝目錄的toolbox dotnetbuilder bin win64 v2.0資料夾中 脫離matlab安裝的環境下,如何使得程式執行自如 c ...
C 和MATLAB混合程式設計 DLL
先小話一下dll,dll是動態鏈結庫,是源 編譯後的二進位制庫檔案和程式介面,和靜態鏈結庫不同的是,程式在編譯時並不鏈結動態鏈結庫的執行體,而是在檔案中保留乙個呼叫標記,在程式執行時才將動態鏈結庫檔案加載入記憶體。並且dll在執行時是共享的,即當多個程式呼叫時,記憶體中也只保持乙份動態鏈結庫。動態鏈...
c 與matlab混合程式設計
實驗平台 matlab r2016b vs2013 思路 1.設定matlab的編譯器,使用外部的vc或者gcc等編譯器。2.編譯m檔案成dll 3.設定vs的include路徑和lib鏈結庫的路徑 4.編寫c 呼叫dll 步驟 1.設定matlab的編譯器 在命令列視窗下,輸入並執行如下命令 me...