External Interfaces/API    

Required Arguments to a MEX-File

The two components of the MEX-file may be separate or combined. In either case, the files must contain the #include "mex.h" header so that the entry point and interface routines are declared properly. The name of the gateway routine must always be mexFunction and must contain these parameters.

The parameters nlhs and nrhs contain the number of left- and right-hand arguments with which the MEX-file is invoked. In the syntax of the MATLAB language, functions have the general form

where the ellipsis (...) denotes additional terms of the same format. The a,b,c,... are left-hand arguments and the d,e,f,... are right-hand arguments.

The parameters plhs and prhs are vectors that contain pointers to the left- and right-hand arguments of the MEX-file. Note that both are declared as containing type mxArray *, which means that the variables pointed at are MATLAB arrays. prhs is a length nrhs array of pointers to the right-hand side inputs to the MEX-file, and plhs is a length nlhs array that will contain pointers to the left-hand side outputs that your function generates.

For example, if you invoke a MEX-file from the MATLAB workspace with the command

the MATLAB interpreter calls mexFunction with the arguments

plhs is a 1-element C array where the single element is a null pointer. prhs is a 2-element C array where the first element is a pointer to an mxArray named Y and the second element is a pointer to an mxArray named Z.

The parameter plhs points at nothing because the output x is not created until the subroutine executes. It is the responsibility of the gateway routine to create an output array and to set a pointer to that array in plhs[0]. If plhs[0] is left unassigned, MATLAB prints a warning message stating that no output has been assigned.


  C MEX-Files Examples of C MEX-Files