如何将C ++中的值数组转换为Matlab中的二维矩阵

时间:2017-03-03 14:27:15

标签: c++ matlab

所以现在我正在尝试使用MatLab和C ++创建深度图像像素强度的三维表面图。

我已经将每个像素的值保存到名为base的数组中,该数组具有整个图像维度的大小:

int base[DIMENSION];

然后我使用mxCreateDoubleMatrix为matlab创建了我的mxArray指针,并尝试使用mxArray函数将基本数组的内容传输到后面提到的memcpy中:

mxArray* Floor = mxCreateDoubleMatrix(VERTICAL, HORIZONTAL, mxREAL);
memcpy((void *)mxGetPr(Floor), (void *)base, sizeof(int)*(370*386));
engPutVariable(m_pEngine, "Floor", Floor); 
engEvalString(m_pEngine, "surf(Floor)");

通过这种方法,我只得到一个空白的三维图。

我尝试过的另一种方法是尝试使用mxCreateNumericMatrix函数。

mxArray* Floor = mxCreateNumericMatrix(VERTICAL, HORIZONTAL,      mxINT8_CLASS,mxREAL);
memcpy((void *)mxGetPr(Floor), (void *)base, sizeof(int)*(370*386));
engPutVariable(m_pEngine, "Floor", Floor); 
engEvalString(m_pEngine, "surf(Floor)");
system("pause");

但是使用后面的方法我得到了运行时异常。

0 个答案:

没有答案