C++ Source Code to MATLAB

조회 수: 1 (최근 30일)
Hanif
Hanif 2017년 5월 3일
댓글: Hanif 2017년 5월 4일
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.
  댓글 수: 3
Walter Roberson
Walter Roberson 2017년 5월 3일
If you can create static class methods with extern "C" to interface to the simulation functions, then you can probably call the routines by using loadlibrary()
Note: loadlibrary() does not work to call general C++ methods, only things that extern "C"
Hanif
Hanif 2017년 5월 4일
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.

댓글을 달려면 로그인하십시오.

채택된 답변

Jan
Jan 2017년 5월 4일
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.
  댓글 수: 3
James Tursa
James Tursa 2017년 5월 4일
Include all of your source files in one mex command so they will all get linked together into one mex routine.
Hanif
Hanif 2017년 5월 4일
Such as:
#include "File1.h"
#include "File2.h"
#include "File3.h"
etc..

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Write C++ Functions Callable from MATLAB (MEX Files)에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by