我想在Matlab中使用我想要制作成mex文件的C++的特征库。我将代码分解为下面的要点。我需要制作一个返回向量,其长度与输入矩阵的行数相对应。在Matlab mex文件中使用特征向量
随着代码下面我得到的编译对应于所述线的follwing错误:
double y_OUT[nrow] = {};
- 错误C2057:预期常量表达式错误
- 错误C2466:不能分配的阵列常量大小0
我想不通为什么我不能分配长度为nrow的向量。 通过取消注释特定行和通过打印nrow我证实它实际上包含正确的数字。有人可以给任何指针(双关语)?
void mexFunction(
int nlhs,
mxArray *plhs[],
int nrhs,
const mxArray *prhs[]
)
{
double *x_IN;
int nrow,ncols;
/* Check for proper number of arguments */
//...
x_IN = mxGetPr(prhs[0]);
nrow = (int)mxGetM(prhs[0]);
ncols = (int)mxGetN(prhs[0]);
double y_OUT[nrow] = {};
MatrixXd x=Map<MatrixXd>(x_IN,nrow,ncols);
VectorXd Respons=VectorXd::Zero(nrow);
Map<VectorXd>(y_OUT,nrow)=Respons.array();
return;
}
你能纠正你的代码?你可以更新它到一个工作版本?我无法从mex matlab输入参数创建一个特征矩阵。 – Pedro77