mex 函数填充 mxCreateDoubleMatrix MATLAB

mex function fill 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));

我试图用图像内容填充 plhs[0],但结果我在输出中得到所有 0 值(plhs[0]).

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

我做错了什么?

您正在尝试用图像内容填充 plhs[0]。 这意味着,plhs[0] 是目标,图像 arr 是源。

如果是这种情况,那么我认为 memcpy 应该更改如下。

首先获取指向plhs[0]的指针,

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

然后在这个指针上做 memcpy。

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