我正在尝试使用Eigen库来编写一个C++程序,我想将其制作成Matlab中的mex文件。我已经将代码简化为下面的基本要素。我需要生成一个返回向量,其长度对应于输入矩阵的行数。
在下面的代码中,我在编译时遇到了以下与该行相对应的错误:
在下面的代码中,我在编译时遇到了以下与该行相对应的错误:
double y_OUT[nrow] = {};
- error C2057: 预期常量表达式
- error C2466: 无法分配大小为0的常量数组
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;
}