[英]Using Matlab's inbuilt class 'delaunayTriangulation' in mex
我想使用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");
你應該能夠使用mxGetProperty
訪問一個對象的屬性mxArray
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.