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

5 Ansichten (letzte 30 Tage)
Nicolas Jaccard
Nicolas Jaccard am 4 Nov. 2011
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 Kommentare
James Tursa
James Tursa am 4 Nov. 2011
Please show the code you are using to do the copying.
Kaustubha Govind
Kaustubha Govind am 4 Nov. 2011
Also, please show us how you are constructing the mxArray.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Nicolas Jaccard
Nicolas Jaccard am 4 Nov. 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

Weitere Antworten (0)

Kategorien

Mehr zu Write C Functions Callable from MATLAB (MEX Files) finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by