MATLAB: Dynamically allocated c++ array covert-convert to mxArray

c++ dynamically allocatedconvert mxarray

Hello every one, i am new to matlab. So what i am trying to do is solve a problem like: Ax=B
I get a nXn matrix from my c++ code and i want to pass its values to mxArray. Specifically i do something like:
double **Ac = NULL;
Ac = new double*[size];
for(i = 0; i < size; i++){
Ac[i] = new double[size];
}
mxArray *Am = NULL;
Am = mxCreateDoubleMatrix (size, size, mxREAL);
memcpy( ( void* )mxGetPr(Am), ( void* )Ac, size*size*sizeof(double));
engPutVariable(ep, "Am",Am);
engEvalString(ep, "plot(Am);");
It shows a plot but not the correct one. Any directions?
Thank you all

Best Answer

Ac is not an array which contains the double values, but an array of pointers to vectors, which contain the values. If you prefer this nested kind of data storage for any good reasons, you need to copy the data vector by vector also:
double *Am_p;
Am_p = mxGetPr(Am);
for (i = 0; i < size; i++) {
memcpy(Amp, Ac[i], size * sizeof(double));
Amp += size;
}