MATLAB Answers

C++ Source Code to MATLAB

2 views (last 30 days)
Hanif on 3 May 2017
Commented: Hanif on 4 May 2017
Hey everyone,
Here's what I am trying to do. I have found some great source code online for a free simulation software written in C++. While the software is great, I'd like to integrate it into MATLAB. I understand that using MEX functionality in MATLAB you can use C++ source code in MATLAB. I'm not too familiar with this, so a tutorial or links to help me out would be great. I can provide a link to the source code if needed? But I'm really looking for a general implementation.
I read through some documentation but as one can expect the learning curve is significant.
Hanif on 4 May 2017
The output of the simulation generates binary files that need further analysis. The inputs into the simulation are saved as a binary function - the code searches for a specific filename or uses default simulation parameters.

Sign in to comment.

Accepted Answer

Jan on 4 May 2017
Integrating some C++ code in a mex file is not hard: The mex file is started at the entry function "mexFunction". In tis function 3 things happen:
  1. Input arguments comming from Matlab are converted to C++ variables,
  2. The C++ functions are called,
  3. The output is converted back to Matlab variables.
For the 1st job, e.g. mxGetPr() gets the pointer to the data of a Matlab double array. mxGetM /mxGetN gets the dimensions of matrices, etc. Check the types of the inputs by mxIsDouble and reject unexpected types, otherwise the C++ part will crash.
The 3rd job uses e.g. mxCreateDoubleMatrix(). This creates a matrix without setting the values. Either copy the results from the C++ part using memcpy, or create the output arrays initially and provide a pointer to the reserved memory directly to the C++ part.
You see, the mexFunction is the gateway between Matlab and C++ only.
Hanif on 4 May 2017
Such as:
#include "File1.h"
#include "File2.h"
#include "File3.h"

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by