0
と間違って何をしました私はこのcppfunc([1 2 3], [1 2 3], [1 2 3])
のように私のMEX関数を呼び出すために計画されmexFunction
は私がmxGetPr
\\cppfunc.cpp
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[]){
\\...Parts where I check the number of lhs and rhs
double* upper = mxGetPr(prhs[0]);
double* lower = mxGetPr(prhs[1]);
double* grids = mxGetPr(prhs[2]);
mexPrintf("upper 1=%d \n\n", upper[0]);
}
内のコードの抜粋をご検討ください。基本的には3つのベクトルを取り込み、最初の入力ベクトルの最初の要素をmexPrintf
に出力します。出力は1
である必要があります。ただし、返される値は
upper 1=3
です。
この関数は、最初の入力ベクトルの長さを返しているようです。たとえば、cppfunc([1 2 3 4], [1 2 3], [1 2 3])
を入力すると、upper 1=4
が返されます。
mexPrintf
への呼び出しで%d
を使用して私が正しいと思ったので、mxGetPr
は入力を2倍の配列に変換するためです。私は何を取りこぼしたか?