簡體   English   中英

在Matx中使用Matlab的內置類'delaunayTriangulation'

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM