Вывод файла Mex (более одного) - PullRequest
1 голос
/ 23 декабря 2011

Я создал mex-файл, который отлично работает, когда вызывается только с выходным аргументом, но дает следующий вывод при вызове с более чем одним:

??? Ошибка при использовании ==> mtimes. Слишком много выходных аргументов.

Я управляю выходными аргументами в функции mex, как показано ниже:

void mexFunction( int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[] ) { 
mxArray *FirstTerm,*SecondTerm,*ThirdTerm,..

....

FirstTerm                       = mxCreateDoubleMatrix(N,M,mxCOMPLEX);
FirstTermRe                     = mxGetPr(FirstTerm);
FirstTermIm                     = mxGetPi(FirstTerm);

SecondTerm                      = mxCreateDoubleMatrix(N,M,mxCOMPLEX);
SecondTermRe                    = mxGetPr(SecondTerm);
SecondTermIm                    = mxGetPi(SecondTerm);

ThirdTerm                       = mxCreateDoubleMatrix(N,M,mxCOMPLEX);
ThirdTermRe                     = mxGetPr(ThirdTerm);
ThirdTermIm                     = mxGetPi(ThirdTerm);
....
....

plhs[0] =FirstTerm; 
plhs[1] =SecondTerm; 
plhs[2] =ThirdTerm;

}

Когда вызывается следующим образом:

function_mex(input_arguments)

генерирует одну выходную переменную.

При вызове с двумя выходными аргументами, как показано ниже:

[x,y]=function_mex(input_arguments)

это дает мне сообщение:

??? Ошибка при использовании ==> mtimes. Слишком много выходных аргументов.

Я просто не знаю, почему эта ошибка. Так я делал в некоторых mex-файлах некоторое время назад, и они работали правильно.

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 24 июня 2012

Вы должны проверить, чтобы убедиться, что число выходов, указанное в matlab, равно 3, потому что ваш mex-файл создает 3 выхода и выплевывает 3 выхода.Это самый простой способ убедиться, что Matlab не жалуется на количество выходов.

...