在vc中調用MATLAB產生的組建時,須要將vc中的參數轉換成mwArray格式。函數
對mwArray賦值,主要包括矩陣賦值和字符串賦值。spa
一.矩陣賦值code
<1>mwArray 定義矩陣變量對象
mwArray A(rows, cols, type)字符串
參數說明:圖像處理
A : 變量名class
rows:行數變量
col :列數方法
type :數t據類型數據
總體含義是:定義矩陣A,行數爲:rows,列數爲:cols,類型爲:type
typedef enum { mxUNKNOWN_CLASS = 0, //未知類型 mxCELL_CLASS, //細胞類型 mxSTRUCT_CLASS, //結構類型 mxLOGICAL_CLASS, //布爾類型 mxCHAR_CLASS, //字符串類型 mxVOID_CLASS, //void類型 mxDOUBLE_CLASS, mxSINGLE_CLASS, //單精度浮點數 mxINT8_CLASS, // mxUINT8_CLASS, mxINT16_CLASS, mxUINT16_CLASS, mxINT32_CLASS, mxUINT32_CLASS, mxINT64_CLASS, mxUINT64_CLASS, mxFUNCTION_CLASS, //函數類型 mxOPAQUE_CLASS, // mxOBJECT_CLASS //對象類型 }
注: 若是參數不是矩陣,只是一個數,令 rows=1,cols=1便可。
<2>矩陣賦初值:
int a[6] = {1,2,3,4,5,6} mwArray A(2,3,mxINT32_CLASS); A.SetData(a,6); //第二個參數爲要設置的數的個數,大小可設爲rows*cols
注:該過程至關於把1*6的矩陣,轉化爲2*3的矩陣,matlab轉化順序是,先排第一列,由上到下爲a[0] a[1],而後排第二列,由上到下爲a[2] a[3],即轉化後的A爲:
1 3 5
2 4 6
若是要使A爲:
1 2 3
4 5 6
需這樣賦值:
int a[6] = {1,2,3,4,5,6} mwArray A(3,2,mxINT32_CLASS); //修改此處:行列數互換 A.SetData(a,6); //第二個參數爲要設置的數的個數,大小可設爲rows*cols
此時生成的A爲:
1 4
2 5
3 6
該矩陣轉置以後,既能夠達到所需形式,轉置過程能夠在matlab的.m文件中添加,先修改.m,而後在生成dll、lib、h文件。
尤爲是,在圖像處理時,若是傳遞的矩陣爲圖像數據矩陣,要採用後一種方法賦值,不然,圖像會嚴重變形失真。
char str[5] = "abcd"; //或 CString str = "abcd" mwArray mwA(str);
該過程比較簡單。