4
入力が整数で出力が整数の配列であるmex関数を作成しようとしています。 関数は次のようになります。int * myFunction(unsigned int N) でmexFunctionでは、私は事が第1の値であるint型の* variab変数を宣言してからmexファイルの出力にあるintの配列
N = mxGetScalar(prhs[0]);
/* assign a pointer to the output */
siz= 2*ceil(log(1.0*N)/log(2.0)-0.5)+1;
plhs[0] = mxCreateDoubleMatrix(1,siz, mxREAL);
vari = (int*) mxGetPr(plhs[0]); */
/* Call the subroutine. */
vari = myFunction(N);
mexPrintf("The first value is %d\n", vari[0]);
が正しいものである(および他のものをチェックし、同様に正確であった)が、ときに私が呼んでルーチンmxFunction(16)は、出力として0しか得られません。 私の出力はint型の配列なので、私は推測しますが、問題の解決方法はわかりません。何かヒント? 乾杯。
+1しかし、OPは、彼は配列を作成するために 'mxCreateNumericArray'または適切な' mxClassID'(例えばため。 'mxINT32_CLASS')と' mxCreateNumericMatrix'を使用する必要があり整数配列を望んでいるからです。そして 'mxGetData'を使って配列の先頭へのポインタを取得します。 – Praetorian
公正な点ですが、OPは要件を明確にするために問題に付随するMatlabコードを提供していませんでした。彼らはそれが動作しないと不平を言うまで慎重の側面で誤って最高 – learnvst