3

このエラーメッセージの前に持っていた人はいますか:

タイプ 'double' の入力引数の関数またはメソッド 'name of function' が定義されていません。

mex ファイルをコンパイルすると、常にこのエラー メッセージが表示されます。パスをよく確認しましたが、正しいパスのようです。

これは私のコードで、mex ファイルはamortiss.c

#include "mex.h"

/* The computational functions */
void arrayquotient(double input1, double input2, double output1)
{

   output1=input1/input2;

}


/* The gateway function */
void mexFunction( int nlhs, mxArray *plhs[],
                  int nrhs, const mxArray *prhs[])
{
/* variable declarations here */
    double input1;      /* input scalar 1 */
    double input2;       /* input scalar 2*/
    double output1;      /* output scalar 1 */   

/* code here */
    /* get the value of the scalar input1  */
   input1 = mxGetScalar(prhs[0]);

/* get the value of the scalar input2 */
   input2 = mxGetScalar(prhs[1]);

/* get the value of the scalar input3 */
   input3 = mxGetScalar(prhs[2]);

/* create the output scalar1 */
    plhs[0] = mxCreateDoubleScalar(input1/input2);

/* get the value of the scalar output1 */
   output1 = mxGetScalar(plhs[0]);

/* call the computational routines */
arrayquotient(input1,input2,output1);
}

mex ファイルが存在することを確認するために、パス (コマンド add path) を追加しましたamortiss.carrayquotient.m次に、関数の宣言を 記述した .m ファイルを作成しました。

function c = arrayquotient(a,b)

ただし、コンパイル時に別のエラー メッセージが表示されます。

Error in ==> arrayquotient at 1
function c=arrayquotient(a,b)

??? Output argument "c" (and maybe others) not assigned during call to
"C:\Users\hp\Documents\MATLAB\codes_Rihab\arrayquotient.m>arrayquotient".
4

1 に答える 1

1

関数amortiss.cは c ファイルであり、Matlab でそのまま実行することはできません。
作成したファイル はarrayquotient.m、その出力に値を割り当てない空の関数ですc

必要なことは、c-ファイルをmexamortiss.cして mex ファイルを作成することですamortiss.mexw32(拡張子はアーキテクチャによって異なります。mexext探している拡張子を見つけるために使用します)。

matlab で、mex コンパイラをセットアップします。

>> mex -setup

マシンにインストールされ、Matlab によって認識されるコンパイラから選択するように指示されます。

mex コンパイラをセットアップしたら、次に進み、c ファイルを mex することができます

>> mex -O -largeArrayDims amortiss.c

次に、mex ファイルが作成amortiss.mexXXXされます (アーキテクチャによっては「XXX」が付きます)。
他の関数と同じように関数を呼び出すことができます

>> c = amortiss( a, b );
于 2013-05-25T19:15:06.067 に答える