Re: [eigen] How to convert a Matrix into (big) column vector

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


On 22.01.2012 12:16, Helmut Jarausch wrote:
how can I cheaply convert a Matrix to a big column vector containing
all the columns of the Matrix stacked one on top of the other
(assuming the Matrix is in column order, of  course)

Assuming the matrix is in column order and has no strides, you can take the .data() pointer and generate a Map using it.

	MatrixXd mat;
	VectorXd::Map(mat.data(), mat.rows()*mat.cols());

I guess, you can even use an aligned map for that.
Alternatively, if you just want to access sole elements, you can simply use mat(i); to access the i^th element (similar as in Matlab).

Actually, instead of the last, I would prefer if there was a method ..asVector() which generates a Map as above (and automatically decides if the data is aligned). Question would be, if .asVector() can also be implemented for Block-types and strided maps somehow.


Christoph




--
----------------------------------------------
Dipl.-Inf. Christoph Hertzberg
Cartesium 0.051
Universität Bremen
Enrique-Schmidt-Straße 5
28359 Bremen

Tel: (+49) 421-218-64252
----------------------------------------------



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/