相关疑难解决方法(0)

Mex文件:如何返回已经分配的matlab数组

我发现了一个非常棘手的问题,我似乎无法轻易解决这个问题.简而言之,我想从一个mex文件返回一个数组,该数组已作为mex函数输入传递.你可以琐碎地做到这一点:

void mexFunction(int nargout, mxArray *pargout [ ], int nargin, const mxArray *pargin[])
{
   pargout[0] = pargin[0];
}
Run Code Online (Sandbox Code Playgroud)

但这不是我需要的.我希望得到原始指针pargin[0],在内部处理它,并通过设置相应的数据指针返回一个新创建的mex数组.像那样:

#include <mex.h>

void mexFunction(int nargout, mxArray *pargout [ ], int nargin, const mxArray *pargin[])
{
  mxArray *outp;
  double *data;
  int m, n;

  /* get input array */
  data = mxGetData(pargin[0]);
  m = mxGetM(pargin[0]);
  n = mxGetN(pargin[0]);

  /* copy pointer to output array */
  outp = mxCreateNumericMatrix(0,0,mxDOUBLE_CLASS,mxREAL);
  mxSetM(outp, m);
  mxSetN(outp, n);
  mxSetData(outp, data);
  /* segfaults with or without the below …
Run Code Online (Sandbox Code Playgroud)

matlab memory-management mex

5
推荐指数
2
解决办法
3609
查看次数

标签 统计

matlab ×1

memory-management ×1

mex ×1