Я пытаюсь использовать Eigen-библиотеку для C++, которую я хочу сделать в файл mex в Matlab. Я сломал код ниже его сути. Мне нужно сделать вектор возврата, длина которого соответствует количеству строк из входной матрицы.Использование собственных векторов в файлах mex Matlab
С кодом ниже я получаю follwing ошибки при компиляции, соответствующей линии:
double y_OUT[nrow] = {};
- ошибка C2057: ожидается постоянное выражение-ошибки
- ошибка C2466: не может выделить массив постоянный размер 0
Я не могу понять, почему я не могу выделить вектор длины 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;
}
Вы в состоянии исправить свой код? Можете ли вы обновить его до рабочей версии? Я не могу создать Eigen Matrix из входного параметра mex matlab. – Pedro77