Boost logo

Ublas :

From: Nico Galoppo (nico_at_[hidden])
Date: 2007-06-12 01:14:23


Markus,

you can get the diagonal of a square matrix m as a vector expression like this:

matrix_type m(n,n);
matrix_vector_range<matrix_type> diag(m, range (0,n), range (0,n));

Then the trace is just the sum of the elements:

double trace = sum(mvs);

--nico

Markus Weimer wrote:
> Hi,
>
> I have some legacy code that computes the inner product between two
> row-major matrices by treating them as long vectors and applying a
> vector inner product to these vectors. I guess getting a vector-view
> onto a matrix is not possible in uBLAS. Thus, I want to compute the
> inner product between two matrices as follows:
>
> v = tr(A*B)
>
> However, I cannot find the trace operation in the documentation. Does
> that mean that there is no trace in uBLAS?
>
> Thanks in advance,
>
> Markus
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> ublas mailing list
> ublas_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/ublas

-- 
Nico Galoppo        UNC-CH PhD. student        http://www.ngaloppo.org
                       +1-919-942-4388