How can I create a Cell Array in a MEX function which can be returned to the MATLAB workspace?

1 view (last 30 days)
I would like to create a cell array in a MEX file which contains two character arrays as members of the cell array. I would also like to return this cell array to the base MATLAB workspace. How can this be done? 

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 17 Oct 2017
The 'mxCreateCellMatrix' function can be used to create a cell matrix within a MEX <file: >
https://www.mathworks.com/help/matlab/apiref/mxcreatecellmatrix.html
Note that once the mxArray corresponding to your cell array has been created, you would may need to set cell array fields using the 'mxSetCell' function: 
https://www.mathworks.com/help/matlab/apiref/mxsetcell.html
An example of this workflow is provided with MATLAB. Please execute the following command on the MATLAB Command Window: 
>> edit([matlabroot '/extern/examples/mx/mxcreatecellmatrix.c']);
There is another example of this workflow with this article as "cellTest.c". This file creates a cell array with "Hello" and "Goodbye" character arrays as members of the cell array. 
If you would like to return a cell array created in a MEX file to the MATLAB workspace, the recommended method is to add the new 'mxArray' to the 'plhs' array within the 'mexFunction' in the MEX file. However, if this is not sufficient for your workflow, you can also use the 'mexPutVariable' function to manually send specified variables back to the base MATLAB workspace. 
https://www.mathworks.com/help/matlab/apiref/mexputvariable.html
 

More Answers (0)

Categories

Find more on Write C Functions Callable from MATLAB (MEX Files) in Help Center and File Exchange

Products


Release

R2015b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!