Re: [eigen] How to create a Matrix<...> without copying data ? |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
Thx.
BTW are Eigen matrix stored in column major format, as with blas/lapack,
by default ?
Is there a command to change storage order of a matrix ?
On Mon, 17 May 2010 13:32:22 +0200, Gael Guennebaud
<gael.guennebaud@xxxxxxxxx> wrote:
> On Mon, May 17, 2010 at 12:30 PM, Benoit Jacob
> <jacob.benoit.1@xxxxxxxxx>wrote:
>
>> You can do:
>>
>> PartialPivLU<MatrixXd> lu(matrix.block(...));
>>
>> or, from your double* pointer,
>>
>> PartialPivLU<MatrixXd>
>> lu(Map<MatrixXd>(pointer,rows,cols).block(...));
>>
>> or you can even get rid of the block() call by doing a strided Map.
>>
>> What we don't allow at the moment is in-place LU, i.e. allowing to not
>> even copy that block.
>>
>
> well, if you are not afraid about using internal functions, and so
> functions
> which can be removed/changed in the future, you can use this one:
>
> template<typename MatrixType, typename IntVector>
> void ei_partial_lu_inplace(MatrixType& lu, IntVector&
row_transpositions,
> int& nb_transpositions);
>
> e.g.,
>
> // declare a name variable for the block because current C++ standard
> sucks.
> Block<MyMatrix> bl(matrix, ....);
> VectorXi row_transpositions(matrix.rows());
> int nb_transpositions;
>
> ei_partial_lu_inplace(bl, row_transpositions, nb_transpositions);
>
> The problem is that now you cannot exploit this LU dec via the
PartialPivLU
> API, but maybe that's enough for your needs... ?
>
> gael
>
>
>>
>> Benoit
>>
>> 2010/5/17 <vincent.lejeune@xxxxxxxxxx>:
>> >
>> > Hi,
>> >
>> >
>> >
>> > I have a matrix stored as a double* in columnsmajor format.
>> >
>> > I would like to compute the LU factorisation of a part of the matrix
>> (that
>> >
>> > is, not the whole matrix, just a sub square of it) inplace, ie I do
not
>> >
>> > want to copy data to an temporary buffer.
>> >
>> >
>> >
>> > Is it possible using Eigen ? I saw that PartialPivLU class copy input
>> >
>> > matrix when constructed...
>> >
>> >
>> >
>> > Thx,
>> >
>> > Vincent
>> >
>> >
>> >
>>
>>
>>