2017-12-10 24 views
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倍の配列に変換するためです。私は何を取りこぼしたか?

答えて

0

フォーマット%dは、intの整数値です。 doubleには%fを使用する必要があります。
documentation of printfを参照してください。