2016-05-16 867 views
0

我有這些代碼行:MEX函數填補mxCreateDoubleMatrix MATLAB

cam::intStruct image = de->get_image(); 
int i, j; 
plhs[0] = mxCreateDoubleMatrix(320, 120, mxREAL); 
memcpy(image.arr, plhs[0], 320 * 120 * sizeof(double)); 

和Im試圖填補plhs [0]與圖像的內容,但作爲結果我得到在輸出全部爲0的值(plhs [0])。

struct intStruct 
{ 
    int arr[320][120]; 
}; 

我在做什麼錯?

回答

1

您正在嘗試將plhs [0]填入圖像內容。 這意味着,plhs [0]是目的地,圖像arr是來源。

如果是這樣的話,我認爲memcpy應該改變如下。

第一得到一個指向plhs [0],

double *ptr = (double *)mxGetData(plhs[0]); 

然後執行的memcpy在此指針。

memcpy(ptr, image.arr, 320 * 120 * sizeof(double)); 
+0

它會導致Matlab崩潰... – ASTeam

+2

您需要首先獲取指向plhs [0]的指針。 –

+0

我已經更新了我的答案,看看是否適合你.. –