mwArray

在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文件。

尤爲是,在圖像處理時,若是傳遞的矩陣爲圖像數據矩陣,要採用後一種方法賦值,不然,圖像會嚴重變形失真。

2、字符串賦值

char str[5] = "abcd";  
//或 CString str = "abcd"  
mwArray mwA(str);

該過程比較簡單。

相關文章
相關標籤/搜索