mex函数:mxDuplicateArray
mexFunction : mxDuplicateArray
当我使用mxDuplicateArray
函数时,我遇到了这个错误:
cannot convert double*
to const mxArray* {aka const mxArray_tag*}
for argument 1
to mxArray* mxDuplicateArray(const mxArray*)
.
有人知道怎么解决吗?
这是我的代码的一部分:
vector<int> *NNLt;
double *NNLtout;
Vector *V;
Vector *Fb;
mwSize *sn;
mwSize nsn;
mwSize nf;
double hs;
double bw;
double mw;
mwSize ncols;
mwSize i;
double *NNLtoutt;
...
createNNLtriangle(NNLt, V, Fb, sn, nsn, nf, hs, bw, mw);
plhs[0] = mxCreateCellMatrix(nsn,50);
...
for(i=0;i<nsn;i++){
// copy(NNLt[i].begin(),NNLt[i].end(),NNLtout[i*50;i*50+NNLt[i].size()]);
// NNLtoutt=mxCreatStrucMatrix(1,50,1,fnom);
copy(NNLt[i].begin(),NNLt[i].end(),NNLtoutt);
mxSetCell(plhs[0],i,mxDuplicateArray(NNLtoutt));
}
mxDuplicateArray
将 mxArray
指针作为输入,而不是 double
指针。
如果您想将 NNLt[i]
向量复制到 MATLAB 矩阵中并将该矩阵放入元胞数组中,您可以这样做:
for(...) {
mxArray* tmp = mxCreatDoubleMatrix(1, NNLt[i].size(), mxREAL);
copy(NNLt[i].begin(), NNLt[i].end(), mxGetPr(tmp));
mxSetCell(plhs[0], i, tmp);
}
您不应尝试释放 tmp
矩阵,让 MATLAB 处理您通过 mx...
函数分配的任何内存。
当我使用mxDuplicateArray
函数时,我遇到了这个错误:
cannot convert
double*
toconst mxArray* {aka const mxArray_tag*}
for argument1
tomxArray* mxDuplicateArray(const mxArray*)
.
有人知道怎么解决吗?
这是我的代码的一部分:
vector<int> *NNLt;
double *NNLtout;
Vector *V;
Vector *Fb;
mwSize *sn;
mwSize nsn;
mwSize nf;
double hs;
double bw;
double mw;
mwSize ncols;
mwSize i;
double *NNLtoutt;
...
createNNLtriangle(NNLt, V, Fb, sn, nsn, nf, hs, bw, mw);
plhs[0] = mxCreateCellMatrix(nsn,50);
...
for(i=0;i<nsn;i++){
// copy(NNLt[i].begin(),NNLt[i].end(),NNLtout[i*50;i*50+NNLt[i].size()]);
// NNLtoutt=mxCreatStrucMatrix(1,50,1,fnom);
copy(NNLt[i].begin(),NNLt[i].end(),NNLtoutt);
mxSetCell(plhs[0],i,mxDuplicateArray(NNLtoutt));
}
mxDuplicateArray
将 mxArray
指针作为输入,而不是 double
指针。
如果您想将 NNLt[i]
向量复制到 MATLAB 矩阵中并将该矩阵放入元胞数组中,您可以这样做:
for(...) {
mxArray* tmp = mxCreatDoubleMatrix(1, NNLt[i].size(), mxREAL);
copy(NNLt[i].begin(), NNLt[i].end(), mxGetPr(tmp));
mxSetCell(plhs[0], i, tmp);
}
您不应尝试释放 tmp
矩阵,让 MATLAB 处理您通过 mx...
函数分配的任何内存。