- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi there,
I need some help here, is it possible to go from a Ipp32f* to a double**??? I'm trying to plot a 3D surface using QwtPlot3D and the loadFromData function ask my data to be like a double pointer. In other words, they are expecting a matrix and not a vector like I have my Ipp data. Let's say that my IPP vector has 20 elements (1x20) and the loadFormData function expects something like data[5][4].
So my question is, is there any way to transform an IPP vector into a double** without creating a loop within a loop to assign element by element the values of the matrix???
Thanks for your help,
Boris
I need some help here, is it possible to go from a Ipp32f* to a double**??? I'm trying to plot a 3D surface using QwtPlot3D and the loadFromData function ask my data to be like a double pointer. In other words, they are expecting a matrix and not a vector like I have my Ipp data. Let's say that my IPP vector has 20 elements (1x20) and the loadFormData function expects something like data[5][4].
So my question is, is there any way to transform an IPP vector into a double** without creating a loop within a loop to assign element by element the values of the matrix???
Thanks for your help,
Boris
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Boris,
I think, that you will have to go through two loops. The reason is, that you need to convert an array of 32-bit data (Ipp32f) into 64-bit data (double); first loop. Then you can assign the individual pointers in your array of double** to map the correspondings vectors in your converted 1D-array; second short loop.
Best regards, TJ
I think, that you will have to go through two loops. The reason is, that you need to convert an array of 32-bit data (Ipp32f) into 64-bit data (double); first loop. Then you can assign the individual pointers in your array of double** to map the correspondings vectors in your converted 1D-array; second short loop.
Best regards, TJ
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi TJ,
thanks for the reply... let's say that I work with Ipp64f* instead of Ipp32f* to avoid the transformation between float and double, do I still need to assign one by one the values between my vector and the double pointer? I just wanted to avoid loops and allocation and deallocation of the double pointer.
Ipp64f xx[5*4] = { 10, 0, 5, 0, 10,
0, 0, 4, 0, 0,
0, 0, 3, 0, 0,
10, 0, 2, 0, 10};
double **x;
x = new double*[4];
for(int i=0; i<5; i++)
x = new double[4];
// --- these are the loops I'd love to avoid ---
for(int i=0; i<4; i++)
for(int j=0; j<5; j++)
x = xx[5*i+j];
.... [do something with the double pointer] ...
for( int i=0; i<5; i++)
delete x;
delete []x;
Boris
thanks for the reply... let's say that I work with Ipp64f* instead of Ipp32f* to avoid the transformation between float and double, do I still need to assign one by one the values between my vector and the double pointer? I just wanted to avoid loops and allocation and deallocation of the double pointer.
Ipp64f xx[5*4] = { 10, 0, 5, 0, 10,
0, 0, 4, 0, 0,
0, 0, 3, 0, 0,
10, 0, 2, 0, 10};
double **x;
x = new double*[4];
for(int i=0; i<5; i++)
x = new double[4];
// --- these are the loops I'd love to avoid ---
for(int i=0; i<4; i++)
for(int j=0; j<5; j++)
x
.... [do something with the double pointer] ...
for( int i=0; i<5; i++)
delete x;
delete []x;
Boris
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Boris,
I was thinking of something like this (I didn't test it):
Ipp64f xx[5*4] = { 10, 0, 5, 0, 10,
0, 0, 4, 0, 0,
0, 0, 3, 0, 0,
10, 0, 2, 0, 10};
double **x;
x = new double*[4];
// --- these are the loops I'd love to avoid ---
for(int i=0; i<4; i++)
x = &xx[5*i];
.... [do something with the double pointer] ...
delete []x;
With this approach you avoid copying your data. **x is pointing to your "original" data but by accessing via x it appears to be reorganised as a matrix.
Best regards,
TJ
I was thinking of something like this (I didn't test it):
Ipp64f xx[5*4] = { 10, 0, 5, 0, 10,
0, 0, 4, 0, 0,
0, 0, 3, 0, 0,
10, 0, 2, 0, 10};
double **x;
x = new double*[4];
// --- these are the loops I'd love to avoid ---
for(int i=0; i<4; i++)
x = &xx[5*i];
.... [do something with the double pointer] ...
delete []x;
With this approach you avoid copying your data. **x is pointing to your "original" data but by accessing via x it appears to be reorganised as a matrix.
Best regards,
TJ
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page