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

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.
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

0 votos

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 Centro de ayuda y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by