calling matlab from c++
Show older comments
Hi
I am trying to print values obtained from matlab function which is called in c++ program. This is the code, I am not sure how can I print values.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "engine.h"
int main()
{
Engine *ep;
if (!(ep = engOpen(""))) {
fprintf(stderr, "\nCan't start MATLAB engine\n");
return EXIT_FAILURE;
}
int const SIZE=1;
int const SIZE2=1;
double x[SIZE][SIZE2];
x[1][1] = 1.0;
mxArray *A=NULL;
A=mxCreateDoubleMatrix(SIZE2, SIZE, mxREAL);
memcpy((void *)mxGetPr(A), (void *)x, sizeof(double)*SIZE*SIZE2);
engPutVariable(ep, "Data", A);
engEvalString(ep, "newData = test_matlab(Data)");
double *cresult;
mxArray *mresult;
mresult = engGetVariable(ep,"newData");
cresult = mxGetPr(mresult);
mxDestroyArray(A);
mxDestroyArray(mresult);
engClose(ep);
return EXIT_SUCCESS;
}
Accepted Answer
More Answers (1)
HANS
on 19 Mar 2018
0 votes
Hi to all,
I have name.mex function and many .cpp and .h files related to it. name.mex takes only 1xinf vector which is a complex double values inside and output is the same size vector.
I want to call this name.mex within C++. As I know I have to use "int mexCallMATLAB(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[], const char *command_name);"
Please could you give a usage example in C++ ? I guess I have to use "ifstream" to load the data vector before I use the function but do I have to define via "mxArray" or ??
Thx, WR
1 Comment
James Tursa
on 19 Mar 2018
Please open up a new Question on this topic, and if possible post the relevant code so we can advise you.
Categories
Find more on Write C Functions Callable from MATLAB (MEX Files) in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!