complex matrix operations

Hello, I am looking for a C++ library that has routines for a variety of complex matrix decompositions (eigen, cholesky, singular value etc) and even complex matrix inverse, principal matrix logarthm of a complex matrix etc. And the matrices which I am talking are pretty huge..can go upto 1024 x 1024 x 32. I have already found a library that can do all of the above..used it..it works fine..but a disadvantage is that it cannot handle multidimensional arrays. Now the question is, does Boost C++ library have functions for the above? Looking forward to a reply and thanks in advance Ramesh

On 08/31/11 08:04, sairamesh raghuraman wrote:
Hello,
I am looking for a C++ library that has routines for a variety of complex matrix decompositions (eigen, cholesky, singular value etc) and even complex matrix inverse, principal matrix logarthm of a complex matrix etc. And the matrices which I am talking are pretty huge..can go upto 1024 x 1024 x 32.
I have already found a library that can do all of the above..used it..it works fine..but a disadvantage is that it cannot handle multidimensional arrays. Now the question is, does Boost C++ library have functions for the above?
Looking forward to a reply and thanks in advance
Ramesh
Hi Ramesh,
I'm not a multi_array expert, but I would guess that multi_array views:
http://www.boost.org/doc/libs/1_47_0/libs/multi_array/doc/user.html#sec_view...
could be used to return a 1020 x 1024 view of your 1024 x 1024 x 32
array, and that view could be passed to whatever you're now using to
do the matrix decompositions. To be more concrete (an copy/pasting from
the above user.html#sec_views and:
http://www.boost.org/doc/libs/1_47_0/libs/multi_array/doc/user.html#sec_exam...
):
// Create a 3D array that is 1024 x 1024 x 3
typedef boost::multi_array

On Wed, Aug 31, 2011 at 6:04 AM, sairamesh raghuraman
Hello,
I am looking for a C++ library that has routines for a variety of complex matrix decompositions (eigen, cholesky, singular value etc) and even complex matrix inverse, principal matrix logarthm of a complex matrix etc. And the matrices which I am talking are pretty huge..can go upto 1024 x 1024 x 32.
I have already found a library that can do all of the above..used it..it works fine..but a disadvantage is that it cannot handle multidimensional arrays. Now the question is, does Boost C++ library have functions for the above?
Looking forward to a reply and thanks in advance
Ramesh _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
I'm not positive if Eigen would fulfill your requirements, but it is pretty generic and quite well optimized. Brian

On 08/31/11 11:25, Brian Budge wrote:
Hello,
I am looking for a C++ library that has routines for a variety of complex matrix decompositions (eigen, cholesky, singular value etc) and even complex matrix inverse, principal matrix logarthm of a complex matrix etc. And the matrices which I am talking are pretty huge..can go upto 1024 x 1024 x 32. [snip] I'm not positive if Eigen would fulfill your requirements, but it is
On Wed, Aug 31, 2011 at 6:04 AM, sairamesh raghuraman
wrote: [snip] pretty generic and quite well optimized. Brian
Hi Brian, Based on: 1024 x 1024 x 32 from Ramesh's post, I'm assuming he needs something more than a 2D array, and at least a 3D arraay; however, based on a quick look at: http://eigen.tuxfamily.org/dox/QuickRefPage.html#QuickRef_Types it appears Eigen only supplies 2D arrays. -regards, Larry

On Wed, Aug 31, 2011 at 10:15 AM, Larry Evans
On 08/31/11 11:25, Brian Budge wrote:
Hello,
I am looking for a C++ library that has routines for a variety of complex matrix decompositions (eigen, cholesky, singular value etc) and even complex matrix inverse, principal matrix logarthm of a complex matrix etc. And the matrices which I am talking are pretty huge..can go upto 1024 x 1024 x 32. [snip] I'm not positive if Eigen would fulfill your requirements, but it is
On Wed, Aug 31, 2011 at 6:04 AM, sairamesh raghuraman
wrote: [snip] pretty generic and quite well optimized. Brian
Hi Brian,
Based on:
1024 x 1024 x 32
from Ramesh's post, I'm assuming he needs something more than a 2D array, and at least a 3D arraay; however, based on a quick look at:
http://eigen.tuxfamily.org/dox/QuickRefPage.html#QuickRef_Types
it appears Eigen only supplies 2D arrays.
-regards, Larry
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Ah, but the types held by the 2D matrix can be vector types. I'm unsure how a 3D matrix would work without knowing special information about each 2D element in any case.

Hi Larry/Brian,
thanks for the replies...will come back in a few days...
regards
Ramesh
On Wed, Aug 31, 2011 at 6:25 PM, Brian Budge
Hello,
I am looking for a C++ library that has routines for a variety of complex matrix decompositions (eigen, cholesky, singular value etc) and even complex matrix inverse, principal matrix logarthm of a complex matrix etc. And
matrices which I am talking are pretty huge..can go upto 1024 x 1024 x
On Wed, Aug 31, 2011 at 6:04 AM, sairamesh raghuraman
wrote: the 32. I have already found a library that can do all of the above..used it..it works fine..but a disadvantage is that it cannot handle multidimensional arrays. Now the question is, does Boost C++ library have functions for
the
above?
Looking forward to a reply and thanks in advance
Ramesh _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
I'm not positive if Eigen would fulfill your requirements, but it is pretty generic and quite well optimized.
Brian _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users

On 8/31/2011 6:04 AM, sairamesh raghuraman wrote: ...
I have already found a library that can do all of the above..used it..it works fine..but a disadvantage is that it cannot handle multidimensional arrays.
Out of curiosity and in case it is relevant for a reply, what library are you using? eg

Hi...
As of now, I am using ALGLIB....it has routines for almost all the
operations i need for my project...The only reason i am asking for a library
that can handle multi-dimensional arrays is to reduce the complexity of code
a little bit. (which with those operations are complex anyway)..But as one
of commented, the operations are for 2d matrices..And the application is raw
image processing concerned with MRI...and here in MRI, the number of
dimensions can go upto 7 or 8 in a matrix (rows, columns, channels, sets,
echoes, phases, averages, measurements, partitions, slices...and it can go
on)..with the datalength sometimes being, 1024 x 1024 x 32 x 10 x 5 x 20 x
20 x 30. (this is actually an extreme case)..but usually standard datasets
can be easily 512 x 512 x 32 x 20.. so in this library (ALGLIB) to handle
such datasets, which I receive from the scanner, i put them all in a huge 2D
matrix..and access them using routines, having for loops..and this is
getting more complex with larger dimensions..
thanks and regards
Ramesh
On Thu, Sep 1, 2011 at 7:40 AM, egoots
On 8/31/2011 6:04 AM, sairamesh raghuraman wrote: ...
I have already found a library that can do all of the above..used it..it
works fine..but a disadvantage is that it cannot handle multidimensional arrays.
Out of curiosity and in case it is relevant for a reply, what library are you using?
eg
______________________________**_________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/**mailman/listinfo.cgi/boost-**usershttp://lists.boost.org/mailman/listinfo.cgi/boost-users

On Fri, Sep 2, 2011 at 00:40, sairamesh raghuraman
Hi...
As of now, I am using ALGLIB....it has routines for almost all the operations i need for my project...The only reason i am asking for a library that can handle multi-dimensional arrays is to reduce the complexity of code a little bit. (which with those operations are complex anyway)..But as one of commented, the operations are for 2d matrices..And the application is raw image processing concerned with MRI...and here in MRI, the number of dimensions can go upto 7 or 8 in a matrix (rows, columns, channels, sets, echoes, phases, averages, measurements, partitions, slices...and it can go on)..with the datalength sometimes being, 1024 x 1024 x 32 x 10 x 5 x 20 x 20 x 30. (this is actually an extreme case)..but usually standard datasets can be easily 512 x 512 x 32 x 20.. so in this library (ALGLIB) to handle such datasets, which I receive from the scanner, i put them all in a huge 2D matrix..and access them using routines, having for loops..and this is getting more complex with larger dimensions..
thanks and regards Ramesh
so it sounds like you need a more transparent / easier to understand storage system. I'm also not a multi_array expert, but you might want to look at Larry Evans' suggestion and see how that storage container interacts with your library. Best, Dee

On 09/01/11 11:40, sairamesh raghuraman wrote:
Hi...
As of now, I am using ALGLIB....it has routines for almost all the operations i need for my project...The only reason i am asking for a library that can handle multi-dimensional arrays is to reduce the complexity of code a little bit. (which with those operations are complex anyway)..But as one of commented, the operations are for 2d matrices..And the application is raw image processing concerned with MRI...and here in MRI, the number of dimensions can go upto 7 or 8 in a matrix (rows, columns, channels, sets, echoes, phases, averages, measurements, partitions, slices...and it can go on)..with the datalength sometimes being, 1024 x 1024 x 32 x 10 x 5 x 20 x 20 x 30. (this is actually an extreme case)..but usually standard datasets can be easily 512 x 512 x 32 x 20.. so in this library (ALGLIB) to handle such datasets, which I receive from the scanner, i put them all in a huge 2D matrix..and access them using routines, having for loops..and this is getting more complex with larger dimensions..
thanks and regards Ramesh
Another post: http://thread.gmane.org/gmane.comp.lib.boost.user/63640/focus=63662 was also asking about medical image processing. Maybe you and the author of that other post could collaborate. In that post he was wanting to use variants because the number of dimensions was not known until runtime. Is that your situation? If so then you might be interested in this: http://svn.boost.org/svn/boost/sandbox/variadic_templates/sandbox/array_dyn/ which, unlike multi_array, allows the dimensions to be specified at runtime and I don't think would suffer as much rumtime overhead as Alle's incomplete attempt to use variants. HTH. -regards, Larry
participants (5)
-
Brian Budge
-
Diederick C. Niehorster
-
egoots
-
Larry Evans
-
sairamesh raghuraman