我有一个函数float * pointwise_search(vector<float > &P,vector<float > &Q,float* n, int len )
。
我希望在matlab中调用它,所以我需要编写一个mexFunction。
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
if (nrhs != 4)
{
mexErrMsgTxt("Input is wrong!");
}
float *n = (float*) mxGetData(prhs[2]);
int len = (int) mxGetScalar(prhs[3]);
vector<float > Numbers= (vector<float >)mxGetPr(prhs[0]);
vector<float > Q= (vector<float >)mxGetPr(prhs[1]);
plhs[1] = pointwise_search(Numbers,Q,n,len );
}
但是我发现vector<float > Numbers= (vector<float >)mxGetPr(prhs[0]);
vector<float > Q= (vector<float >)mxGetPr(prhs[1]);
是错误的。
因此,我不得不将float * pointwise_search(vector<float > &P,vector<float > &Q,float* n, int len )
更改为float * pointwise_search(float *P,float *Q,float* n, int len )
。
根据答案,我重新编写如下:
float * pointwise_search(float p,float *q,int num_thres, float n, int len )
{ vector<float> P{p, p + num_thres};
vector<float> Q{q, q + num_thres};
int size_of_threshold = P.size();
...
}
但是出现了错误。
pointwise_search.cpp(12) : error C2601: 'P' : 本地函数定义是不合法的
pointwise_search.cpp(11): 这一行包含了一个尚未匹配的 '{'
根据注释,我应该将 vector<float> P{p, p + num_thres};
更改为 vector<float> P(p, p + num_thres);
。:)