C++ vector to MxArray as output for a MEX function

5 visualizaciones (últimos 30 días)
Hi all,
I've been stuck on this for a few days; I have a function with many nested for-loops and I decided to create a MEX version in order to speed up its execution. So far so good, the compiled approach is, as expected, much faster.
I generate a non determinate number of data points that I store in an array. For now, I am creating a very large array hoping it will be big enough to store my data. But I would like it to be a tad more elegant and use dynamic arrays. Because I am adding one element at a time, I figured that re-allocating every iteration is not the most optimal approach. I then tried to use vectors (as in C++ vectors) but I ran into another issue:
I have the following:
vector<int> myVector(0);
To which I add elements using:
myVector.push_back(dataPoint);
My question is: how can I possibly copy the content of the vector at the end of my routine to an mxArray that I can thenuse as the output of my MEX function? I tried memcopy but somehow I keep getting seg faults.
Any help?
Thanks!
Nicolas
  2 comentarios
James Tursa
James Tursa el 4 de Nov. de 2011
Please show the code you are using to do the copying.
Kaustubha Govind
Kaustubha Govind el 4 de Nov. de 2011
Also, please show us how you are constructing the mxArray.

Iniciar sesión para comentar.

Respuesta aceptada

Nicolas Jaccard
Nicolas Jaccard el 4 de Nov. de 2011
I guess this is a typical case of actually writing the question making me realize what was wrong!
I constructed my mxArray using mxCreateNumericMatrix but I used the wrong data type, in order to be compatible with my int vector, I had to use mxUINT16_CLASS as the type flag.
Nicolas

Más respuestas (0)

Categorías

Más información sobre Write C Functions Callable from MATLAB (MEX Files) en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by