【发布时间】:2014-02-13 10:12:28
【问题描述】:
我正在尝试将 Eigen 库用于我想在 Matlab 中制作成 mex 文件的 c++。我将代码分解为下面的基本要素。我需要创建一个返回向量,其长度对应于输入矩阵的行数。
使用下面的代码,我在编译时遇到以下错误:
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 输入参数创建特征矩阵。