2016-05-16 57 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

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