MATLAB Answers


Error message Mex File Matlab

Has any one had before this error message "Undefined function or method 'name of function' for inputs arguments of type 'double'. I always have this error message when compiling a mex file. I have checked well the path, and it seems the right one. The mex file is "amortiss.c", the error message "Undefined function or method 'arrayquotient' for input arguments of type 'double'. This is my code:

#include "mex.h"
/* The computational function */ void arrayquotient(double input1, double input2, double output1) {
/* 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]);
/* 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); } 

I added the path (command addpath and then savepath) to make sure the mex file "amortiss.c" exists. Then I created a .m file called "arrayquotient.m" in which I just wrote the declaration of my function : function c=arrayquotient(a,b) and that is to make sure that the function arrayquotient exists too.

when compiling an other error message appears: 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". So please Help me !! I would appreciate any suggestion from you. Thanks.


Log in to comment.



1 Answer

Answer by Kaustubha Govind on 29 May 2013
 Accepted Answer

After compilation, you MEX-file should have the name amortiss (same name as the .c file) with a platform-specific extension like .mexw32, .mexw64, etc. Check that the file exists on the path using the command which amortiss to make sure that MATLAB can find the function. You can now call into this function.

Also, in the function arrayquotient, the variable 'output1' is passed in by value, so it's not really being returned to the caller. You may want to pass it in by pointer instead.

  1 Comment

Thank you very much for your help, I changed the function's name and it worked well.

Log in to comment.

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!