在mex中使用Matlab内置类'delaunay Triangulation'

时间:2013-08-28 13:02:27

标签: c++ matlab mex

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

在Matlab中,

DT = delaunayTriangulation(P)

使用'点计算三角测量。 &安培; ' 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");

1 个答案:

答案 0 :(得分:0)

您应该可以使用mxGetProperty来访问mxArray中对象的属性。