return pm; }
mwArray Staruct2mwArray(struct Coordinate *pStaruct) {
mwSize m = 1, n = 1; const int nfields = 2;
const char *fieldnames[2] = {\,\}; const mwIndex index = 0;
mxArray pm(m, n, nfields, fieldnames);
mxArray mpos = Staruct2mwArray(&(pStaruct->pos)); pm(fieldnames[0], 1, 1) = mpos;
mxArray mname(pStaruct->name); pm(fieldnames[1], 1, 1) = mname;
return pm; }
(3)mxArray转换成结构体:
struct Coordinate *mwArray2Staruct(mwArray pm) {
// 代码仅处理 name 字段 pos 字段是三个简单类型省略 struct Coordinate *pStaruct = new struct Coordinate;
const int nfields = 2;
const char *fieldnames[2] = {\,\};
mwArray mwStr = pm.Get(fieldnames[1], 1, 1); char *str = strdup(mwStr.ToString());
memcpy(pStaruct->name,str,sizeof(char)*ARRAYSIZE);
return pStaruct; }
(4)mwArray转换成结构体:
struct Coordinate *mxArray2Staruct(mxArray *pm) {
// 代码仅处理 name 字段 pos 字段是三个简单类型省略 struct Coordinate *pStaruct = new struct Coordinate;
mxArray * mxname = mxGetFieldByNumber(pm, 1, 1) mxArray * str = mxGetPr(mxname);
memcpy(pStaruct->name,str,sizeof(char)*ARRAYSIZE);
return pStaruct; }