0

我想使用 Matlab 的delaunayTriangulation类在 mex 函数中构建一组 3D 点 P [nx3 矩阵] 的三角剖分。

在 Matlab 中,

DT = delaunayTriangulation(P)

使用 'Points' 和 'ConnectivityList' 作为 DT 的类属性计算三角剖分。

如何在 mex 文件中执行相同的操作?

void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) { 
....

int n;
int elements = n*3;

double* P_ptr; /*contains 3D coordinates*/
P_ptr = mxMalloc(elements * sizeof(double));

/* fill up P_ptr with coordinates */

mxArray *DT, *P;

mxSetPr(P,P_ptr); /* Set P_ptr to mxArray P */
mxSetM(P, n);
mxSetN(P, 3);

mexCallMATLAB(1, &DT, 1, &P, "delaunayTriangulation");

....

}

这是正确的方法吗?另外,如果上面的代码是正确的,我如何从输出 mxArray *DT 访问类属性(Points,ConnectivityList)?

谢谢

编辑:在上面的代码中更改DT&DT正确性。此外,基于 Sam 的解决方案,我能够通过以下代码访问该属性(例如“ConnectivityList”):

mxArray* variable_name = mxGetProperty(DT,0,"ConnectivityList");

4

1 回答 1

0

您应该能够使用mxGetProperty来访问mxArray.

于 2013-08-28T13:17:28.080 回答