VC与Matlab混合编程=== 下载本文

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; }