Я создал 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-файлах некоторое время назад, и они работали правильно.
Кто-нибудь может мне помочь?