On 03/29/2012 01:18 AM, Douglas Bates wrote:
On Thu, Mar 29, 2012 at 3:50 AM, Mark Borgerding<mark@xxxxxxxxxxxxxx>
wrote:
(sorry for hitting send too soon)
http://en.wikipedia.org/wiki/Gramian_matrix
What is the fastest way to compute MM' when M is wide?
The diagonal elements are the norm-squared of the rows of M. The result
is
Hermitian.
Is there an optimized method in Eigen or otherwise?
I have used the rankUpdate method for a selfadjoint view to calculate
this. I assume that it is an efficient way to calculate the result
but I haven't done any timings.
MatrixXcd MMt(M.rows(), M.rows();
MMt.setZero().selfadjointView<Eigen::Upper>().rankUpdate(M);
Thanks. That cut the time to about 80% of the full matrix product.
Is there an elegant way to recover the full, square self-adjoint matrix from
a SelfAdjointView ?
I've been adding the SA view to its own adjoint and then subtracting the
original diagonal.