|
Ublas : |
From: Kresimir Fresl (fresl_at_[hidden])
Date: 2006-12-18 03:06:40
Epic John wrote:
> Kresimir, do you mind giving a very brief descriptions of what can be
> accomplished with the matrix_indirect class as well (i.e. what you
> remember implementing, and what you remember not working)
matrix_indirect is a view into another matrix (dense or sparse).
Its elements are elements of the original matrix which are in
the intersections of rows and column enumerated in given
indirect_arrays. For example, if indirect_arrays are
irow: 1, 4, 6
icol: 2, 5
then matrix_indirect is a 3x2 matrix which "contains" following elements
of original matrix
1,2 1,5
4,2 4,5
6,2 6,5
Code should be something like:
ublas::matrix<double> m (10, 10);
ublas::indirect_array<> irow (3), icol (2);
... fill m, irow, icol
ublas::matrix_indirect<matrix<double> > mi (m, irow, icol);
mi = ... something ...
... + mi ...
... + project (m, irow, icol) - ...
project (m, irow, icol) = ...
mi (0,1) = ...
Assignment to matrix_indirect or to its changes original matrix.
Eg. last line will change the value of m (1,5).
You can also combine matrix_indirect with matrix_range and matrix_slice
and, of course, matrix_indirect.
What does not work? I don't know.
Hope this helps,
fres