我想在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