c++ mex error: invalid types ‘double[mwSize]’ for array subscript
c++ mex error: invalid types ‘double[mwSize]’ for array subscript
我知道之前有人问过类似的问题,但它们似乎围绕着常规 c++
代码而不是为创建 mex
文件而编写的 c++
代码。
正如这篇 post 的标题所述,我收到以下错误:
gaussDraw.cpp:110: error: invalid types ‘double[mwSize]’ for array subscript
mex: compile of ' "gaussDraw.cpp"' failed.
现在,我对 c++
中的编码还很陌生,但我认为我很快就能掌握它。
下面是我的mexFunction
和变量声明的声明。您会注意到我已经声明了 double *x
,这似乎是有问题的变量(当我到达 line 110
时我们将看到):
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[]){
int i,j,numactiveid,count;
mwSize p,n,k;
double *newX, *stDev, *x, *c, *d, *l, *u, *tol, *y, *finallambda, *finallb, *finalub, *dd;
int numVals,indexPos,numToDraw,curRandVal;
double tempXVal,curStd, curMean,lambda,temp,lb,ub,tempDVal,xBarVal;
int *activeId;
我是这样设置的 x
:
// Get input values
p=mxGetM(prhs[0]); //get the size of the original x vector
x = mxGetPr(prhs[0]);//Original x vector
这是有问题的代码块(我已经单独声明了每个值以明确发生问题的位置,并添加了一条注释,显示与第 110 行对应的内容):
for(k=0;k<indexPos;++k){
tempXVal = tempX[k];
tempDVal = dd[k];
xBarVal = x[k];//This is line 110
temp[k] = xBarVal + (tempXVal * tempDVal);
}
所以,我不确定为什么会收到此错误。如果重要的话,x
将是从 matlab 传递到 [希望未来] mex
文件的 vectory/array。如果有人可以帮我解决这个问题,我将不胜感激。谢谢!
您的线路号码似乎已关闭。它实际上是在抱怨下面的行,其中 temp
是 double
而您正试图将其索引为 temp[k]
。
我知道之前有人问过类似的问题,但它们似乎围绕着常规 c++
代码而不是为创建 mex
文件而编写的 c++
代码。
正如这篇 post 的标题所述,我收到以下错误:
gaussDraw.cpp:110: error: invalid types ‘double[mwSize]’ for array subscript
mex: compile of ' "gaussDraw.cpp"' failed.
现在,我对 c++
中的编码还很陌生,但我认为我很快就能掌握它。
下面是我的mexFunction
和变量声明的声明。您会注意到我已经声明了 double *x
,这似乎是有问题的变量(当我到达 line 110
时我们将看到):
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[]){
int i,j,numactiveid,count;
mwSize p,n,k;
double *newX, *stDev, *x, *c, *d, *l, *u, *tol, *y, *finallambda, *finallb, *finalub, *dd;
int numVals,indexPos,numToDraw,curRandVal;
double tempXVal,curStd, curMean,lambda,temp,lb,ub,tempDVal,xBarVal;
int *activeId;
我是这样设置的 x
:
// Get input values
p=mxGetM(prhs[0]); //get the size of the original x vector
x = mxGetPr(prhs[0]);//Original x vector
这是有问题的代码块(我已经单独声明了每个值以明确发生问题的位置,并添加了一条注释,显示与第 110 行对应的内容):
for(k=0;k<indexPos;++k){
tempXVal = tempX[k];
tempDVal = dd[k];
xBarVal = x[k];//This is line 110
temp[k] = xBarVal + (tempXVal * tempDVal);
}
所以,我不确定为什么会收到此错误。如果重要的话,x
将是从 matlab 传递到 [希望未来] mex
文件的 vectory/array。如果有人可以帮我解决这个问题,我将不胜感激。谢谢!
您的线路号码似乎已关闭。它实际上是在抱怨下面的行,其中 temp
是 double
而您正试图将其索引为 temp[k]
。