C++&MATLAB混合程式設計之mwArray使用例項
這篇部落格主要介紹C++&MATLAB混合程式設計中mwArray型別的使用,並給出一個測試通過的小例子,終於如何生成混合程式設計中使用的.dll,.h等檔案,如何在專案中配置並呼叫不在本文中進行敘述。
mwArray是在C++專案中呼叫MATLAB函式時使用的資料型別,無論傳入引數,還是獲取返回值,均使用這一種資料型別,可以看作為一種由MATLAB編譯器識別的多維陣列型別。下面結合一個求和的程式對其使用進行簡單介紹。
matlab函式:
function c = add(a,b)
c = a + b;
end
此函式以封裝好,並在C++中進行了相關配置與引用(此文略)。
C++中的關鍵程式碼:
if ( ! addInitialize()) // addInitialize() 為add()打包是自動生成的初始化函式,必須且直接呼叫即可,其名稱格式為“函式名Initialize()”
{
cout<< "cant initialize."<<endl;
exit(0);
}
// double型別陣列,表示C++中的變數a,變數b
double a_row[] = { 7 };
double b_row[] = { 4 };
// mwArray型別變數,並用double型別的a,b對其進行賦值
// mwArray定義格式 : 變數名(行數,列數,資料型別)
// 賦值格式:mwArray變數.SetData(C++變數, 資料個數)
mwArray a(1, 1, mxDOUBLE_CLASS);
mwArray b(1, 1, mxDOUBLE_CLASS);
mwArray c(1, 1, mxDOUBLE_CLASS);
a.SetData(a_row, 1);
b.SetData(b_row, 1);
// 函式呼叫格式:函式名(返回值個數, 返回值1... ,引數1,引數2,.... )
// 此處有一個返回值c,兩個引數,a,b
add(1, c, a, b);
// 輸出結果, 由於返回值為mwArray型別,使用()訪問,且其下標從1開始
// 即若matlab函式返回值有多個且寫成一個矩陣形式,則對其訪問為c(1), c(2),...
// 且可直接對C++型別賦值 或輸出,如: double result = c(1) ;
cout<< c(1)<<endl;
// 終止呼叫函式,與初始化函式一樣自動生成
addTerminate();
那麼,到此為止,mwArray的簡單使用就結束了,若MATLAB函式內處理過程較複雜,也都不需要在呼叫中考慮。