...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
The templated class matrix_row<M>
allows
addressing a row of a matrix.
#include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/matrix_proxy.hpp> #include <boost/numeric/ublas/io.hpp> int main () { using namespace boost::numeric::ublas; matrix<double> m (3, 3); for (unsigned i = 0; i < m.size1 (); ++ i) { matrix_row<matrix<double> > mr (m, i); for (unsigned j = 0; j < mr.size (); ++ j) mr (j) = 3 * i + j; std::cout << mr << std::endl; } }
Defined in the header matrix_proxy.hpp.
Parameter | Description | Default |
---|---|---|
M |
The type of matrix referenced. |
If the specified row falls outside that of the row index range
of the matrix, then the matrix_row
is not a well
formed Vector Expression. That is, access to an element which is
outside of the matrix is undefined.
None, except for those imposed by the requirements of Vector Expression .
vector_expression<matrix_row<M> >
Member | Description |
---|---|
matrix_row (matrix_type &data, size_type
i) |
Constructs a sub vector. |
size_type size () const |
Returns the size of the sub vector. |
const_reference operator () (size_type i)
const |
Returns the value of the i -th element. |
reference operator () (size_type i) |
Returns a reference of the i -th element. |
matrix_row &operator = (const matrix_row
&mr) |
The assignment operator. |
matrix_row &assign_temporary (matrix_row
&mr) |
Assigns a temporary. May change the matrix row mr
. |
template<class AE> |
The extended assignment operator. |
template<class AE> |
Assigns a vector expression to the sub vector. Left and right hand side of the assignment should be independent. |
template<class AE> |
A computed assignment operator. Adds the vector expression to the sub vector. |
template<class AE> |
Adds a vector expression to the sub vector. Left and right hand side of the assignment should be independent. |
template<class AE> |
A computed assignment operator. Subtracts the vector expression from the sub vector. |
template<class AE> |
Subtracts a vector expression from the sub vector. Left and right hand side of the assignment should be independent. |
template<class AT> |
A computed assignment operator. Multiplies the sub vector with a scalar. |
template<class AT> |
A computed assignment operator. Divides the sub vector through a scalar. |
void swap (matrix_row &mr) |
Swaps the contents of the sub vectors. |
const_iterator begin () const |
Returns a const_iterator pointing to the beginning
of the matrix_row . |
const_iterator end () const |
Returns a const_iterator pointing to the end of
the matrix_row . |
iterator begin () |
Returns a iterator pointing to the beginning of
the matrix_row . |
iterator end () |
Returns a iterator pointing to the end of the
matrix_row . |
const_reverse_iterator rbegin () const |
Returns a const_reverse_iterator pointing to the
beginning of the reversed matrix_row . |
const_reverse_iterator rend () const |
Returns a const_reverse_iterator pointing to the
end of the reversed matrix_row . |
reverse_iterator rbegin () |
Returns a reverse_iterator pointing to the
beginning of the reversed matrix_row . |
reverse_iterator rend () |
Returns a reverse_iterator pointing to the end of
the reversed matrix_row . |
The free row
functions support the construction of
matrix rows.
template<class M>
matrix_row<M> row (M &data, std::size_t i);
template<class M>
const matrix_row<const M> row (const M &data, std::size_t i);
Defined in the header matrix_proxy.hpp.
M
is a model of Matrix Expression .Linear depending from the size of the row.
#include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/matrix_proxy.hpp> #include <boost/numeric/ublas/io.hpp> int main () { using namespace boost::numeric::ublas; matrix<double> m (3, 3); for (unsigned i = 0; i < m.size1 (); ++ i) { for (unsigned j = 0; j < m.size2 (); ++ j) row (m, i) (j) = 3 * i + j; std::cout << row (m, i) << std::endl; } }
The templated class matrix_column<M>
allows
addressing a column of a matrix.
#include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/matrix_proxy.hpp> #include <boost/numeric/ublas/io.hpp> int main () { using namespace boost::numeric::ublas; matrix<double> m (3, 3); for (unsigned j = 0; j < m.size2 (); ++ j) { matrix_column<matrix<double> > mc (m, j); for (unsigned i = 0; i < mc.size (); ++ i) mc (i) = 3 * i + j; std::cout << mc << std::endl; } }
Defined in the header matrix_proxy.hpp.
Parameter | Description | Default |
---|---|---|
M |
The type of matrix referenced. |
If the specified column falls outside that of the column index
range of the matrix, then the matrix_column
is not a
well formed Vector Expression. That is, access to an element which
is outside of the matrix is undefined.
None, except for those imposed by the requirements of Vector Expression .
vector_expression<matrix_column<M>
>
Member | Description |
---|---|
matrix_column (matrix_type &data, size_type
j) |
Constructs a sub vector. |
size_type size () const |
Returns the size of the sub vector. |
const_reference operator () (size_type i)
const |
Returns the value of the i -th element. |
reference operator () (size_type i) |
Returns a reference of the i -th element. |
matrix_column &operator = (const matrix_column
&mc) |
The assignment operator. |
matrix_column &assign_temporary (matrix_column
&mc) |
Assigns a temporary. May change the matrix column
mc . |
template<class AE> |
The extended assignment operator. |
template<class AE> |
Assigns a vector expression to the sub vector. Left and right hand side of the assignment should be independent. |
template<class AE> |
A computed assignment operator. Adds the vector expression to the sub vector. |
template<class AE> |
Adds a vector expression to the sub vector. Left and right hand side of the assignment should be independent. |
template<class AE> |
A computed assignment operator. Subtracts the vector expression from the sub vector. |
template<class AE> |
Subtracts a vector expression from the sub vector. Left and right hand side of the assignment should be independent. |
template<class AT> |
A computed assignment operator. Multiplies the sub vector with a scalar. |
template<class AT> |
A computed assignment operator. Divides the sub vector through a scalar. |
void swap (matrix_column &mc) |
Swaps the contents of the sub vectors. |
const_iterator begin () const |
Returns a const_iterator pointing to the beginning
of the matrix_column . |
const_iterator end () const |
Returns a const_iterator pointing to the end of
the matrix_column . |
iterator begin () |
Returns a iterator pointing to the beginning of
the matrix_column . |
iterator end () |
Returns a iterator pointing to the end of the
matrix_column . |
const_reverse_iterator rbegin () const |
Returns a const_reverse_iterator pointing to the
beginning of the reversed matrix_column . |
const_reverse_iterator rend () const |
Returns a const_reverse_iterator pointing to the
end of the reversed matrix_column . |
reverse_iterator rbegin () |
Returns a reverse_iterator pointing to the
beginning of the reversed matrix_column . |
reverse_iterator rend () |
Returns a reverse_iterator pointing to the end of
the reversed matrix_column . |
The free column
functions support the construction
of matrix columns.
template<class M>
matrix_column<M> column (M &data, std::size_t j);
template<class M>
const matrix_column<const M> column (const M &data, std::size_t j);
Defined in the header matrix_proxy.hpp.
M
is a model of Matrix Expression .Linear depending from the size of the column.
#include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/matrix_proxy.hpp> #include <boost/numeric/ublas/io.hpp> int main () { using namespace boost::numeric::ublas; matrix<double> m (3, 3); for (unsigned j = 0; j < m.size2 (); ++ j) { for (unsigned i = 0; i < m.size1 (); ++ i) column (m, j) (i) = 3 * i + j; std::cout << column (m, j) << std::endl; } }
The templated class matrix_vector_range<M>
allows addressing a sub vector of a matrix.
#include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/matrix_proxy.hpp> #include <boost/numeric/ublas/io.hpp> int main () { using namespace boost::numeric::ublas; matrix<double> m (3, 3); for (unsigned i = 0; i < m.size1 (); ++ i) for (unsigned j = 0; j < m.size2 (); ++ j) m (i, j) = 3 * i + j; matrix_vector_range<matrix<double> > mvr (m, range (0, 3), range (0, 3)); std::cout << mvr << std::endl; }
Defined in the header matrix_proxy.hpp.
Parameter | Description | Default |
---|---|---|
M |
The type of matrix referenced. |
If the specified ranges fall outside that of the index range of
the matrix, then the matrix_vector_range
is not a well
formed Vector Expression. That is, access to an element which is
outside of the matrix is undefined.
None, except for those imposed by the requirements of Vector Expression .
vector_expression<matrix_vector_range<M>
>
Member | Description |
---|---|
matrix_vector_range (matrix_type &data, |
Constructs a sub vector. |
size_type size () const |
Returns the size of the sub vector. |
const_reference operator () (size_type i)
const |
Returns the value of the i -th element. |
reference operator () (size_type i) |
Returns a reference of the i -th element. |
matrix_vector_range &operator = (const
matrix_vector_range &mvr) |
The assignment operator. |
matrix_vector_range &assign_temporary
(matrix_vector_range &mvr) |
Assigns a temporary. May change the matrix vector range
mvr . |
template<class AE> |
The extended assignment operator. |
template<class AE> |
Assigns a vector expression to the sub vector. Left and right hand side of the assignment should be independent. |
template<class AE> |
A computed assignment operator. Adds the vector expression to the sub vector. |
template<class AE> |
Adds a vector expression to the sub vector. Left and right hand side of the assignment should be independent. |
template<class AE> |
A computed assignment operator. Subtracts the vector expression from the sub vector. |
template<class AE> |
Subtracts a vector expression from the sub vector. Left and right hand side of the assignment should be independent. |
template<class AT> |
A computed assignment operator. Multiplies the sub vector with a scalar. |
template<class AT> |
A computed assignment operator. Divides the sub vector through a scalar. |
void swap (matrix_vector_range &mvr) |
Swaps the contents of the sub vectors. |
const_iterator begin () const |
Returns a const_iterator pointing to the beginning
of the matrix_vector_range . |
const_iterator end () const |
Returns a const_iterator pointing to the end of
the matrix_vector_range . |
iterator begin () |
Returns a iterator pointing to the beginning of
the matrix_vector_range . |
iterator end () |
Returns a iterator pointing to the end of the
matrix_vector_range . |
const_reverse_iterator rbegin () const |
Returns a const_reverse_iterator pointing to the
beginning of the matrix_vector_range . |
const_reverse_iterator rend () const |
Returns a const_reverse_iterator pointing to the
end of the reversed matrix_vector_range . |
reverse_iterator rbegin () |
Returns a reverse_iterator pointing to the
beginning of the reversed matrix_vector_range . |
reverse_iterator rend () |
Returns a reverse_iterator pointing to the end of
the reversed matrix_vector_range . |
The templated class matrix_vector_slice<M>
allows addressing a sliced sub vector of a matrix.
#include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/matrix_proxy.hpp> #include <boost/numeric/ublas/io.hpp> int main () { using namespace boost::numeric::ublas; matrix<double> m (3, 3); for (unsigned i = 0; i < m.size1 (); ++ i) for (unsigned j = 0; j < m.size2 (); ++ j) m (i, j) = 3 * i + j; matrix_vector_slice<matrix<double> > mvs (m, slice (0, 1, 3), slice (0, 1, 3)); std::cout << mvs << std::endl; }
Defined in the header matrix_proxy.hpp.
Parameter | Description | Default |
---|---|---|
M |
The type of matrix referenced. |
If the specified slices fall outside that of the index range of
the matrix, then the matrix_vector_slice
is not a well
formed Vector Expression. That is, access to an element which is
outside of the matrix is undefined.
None, except for those imposed by the requirements of Vector Expression .
vector_expression<matrix_vector_slice<M>
>
Member | Description |
---|---|
matrix_vector_slice (matrix_type &data, |
Constructs a sub vector. |
size_type size () const |
Returns the size of the sub vector. |
const_reference operator () (size_type i)
const |
Returns the value of the i -th element. |
reference operator () (size_type i) |
Returns a reference of the i -th element. |
matrix_vector_slice &operator = (const
matrix_vector_slice &mvs) |
The assignment operator. |
matrix_vector_slice &assign_temporary
(matrix_vector_slice &mvs) |
Assigns a temporary. May change the matrix vector slice
vs . |
template<class AE> |
The extended assignment operator. |
template<class AE> |
Assigns a vector expression to the sub vector. Left and right hand side of the assignment should be independent. |
template<class AE> |
A computed assignment operator. Adds the vector expression to the sub vector. |
template<class AE> |
Adds a vector expression to the sub vector. Left and right hand side of the assignment should be independent. |
template<class AE> |
A computed assignment operator. Subtracts the vector expression from the sub vector. |
template<class AE> |
Subtracts a vector expression from the sub vector. Left and right hand side of the assignment should be independent. |
template<class AT> |
A computed assignment operator. Multiplies the sub vector with a scalar. |
template<class AT> |
A computed assignment operator. Divides the sub vector through a scalar. |
void swap (matrix_vector_slice &mvs) |
Swaps the contents of the sub vectors. |
const_iterator begin () const |
Returns a const_iterator pointing to the beginning
of the matrix_vector_slice . |
const_iterator end () const |
Returns a const_iterator pointing to the end of
the matrix_vector_slice . |
iterator begin () |
Returns a iterator pointing to the beginning of
the matrix_vector_slice . |
iterator end () |
Returns a iterator pointing to the end of the
matrix_vector_slice . |
const_reverse_iterator rbegin () const |
Returns a const_reverse_iterator pointing to the
beginning of the reversed matrix_vector_slice . |
const_reverse_iterator rend () const |
Returns a const_reverse_iterator pointing to the
end of the reversed matrix_vector_slice . |
reverse_iterator rbegin () |
Returns a reverse_iterator pointing to the
beginning of the reversed matrix_vector_slice . |
reverse_iterator rend () |
Returns a reverse_iterator pointing to the end of
the reversed matrix_vector_slice . |
The templated class matrix_range<M>
allows
addressing a sub matrix of a matrix.
#include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/matrix_proxy.hpp> #include <boost/numeric/ublas/io.hpp> int main () { using namespace boost::numeric::ublas; matrix<double> m (3, 3); matrix_range<matrix<double> > mr (m, range (0, 3), range (0, 3)); for (unsigned i = 0; i < mr.size1 (); ++ i) for (unsigned j = 0; j < mr.size2 (); ++ j) mr (i, j) = 3 * i + j; std::cout << mr << std::endl; }
Defined in the header matrix_proxy.hpp.
Parameter | Description | Default |
---|---|---|
M |
The type of matrix referenced. |
If the specified ranges fall outside that of the index range of
the matrix, then the matrix_range
is not a well formed
Matrix Expression. That is, access to an element which is outside
of the matrix is undefined.
None, except for those imposed by the requirements of Matrix Expression .
matrix_expression<matrix_range<M> >
Member | Description |
---|---|
matrix_range (matrix_type &data, |
Constructs a sub matrix. |
size_type start1 () const |
Returns the index of the first row. |
size_type size1 () const |
Returns the number of rows. |
size_type start2 () const |
Returns the index of the first column. |
size_type size2 () const |
Returns the number of columns. |
const_reference operator () (size_type i, size_type j)
const |
Returns the value of the j -th element in the
i -th row. |
reference operator () (size_type i, size_type
j) |
Returns a reference of the j -th element in the
i -th row. |
matrix_range &operator = (const matrix_range
&mr) |
The assignment operator. |
matrix_range &assign_temporary (matrix_range
&mr) |
Assigns a temporary. May change the matrix range
mr . |
template<class AE> |
The extended assignment operator. |
template<class AE> |
Assigns a matrix expression to the sub matrix. Left and right hand side of the assignment should be independent. |
template<class AE> |
A computed assignment operator. Adds the matrix expression to the sub matrix. |
template<class AE> |
Adds a matrix expression to the sub matrix. Left and right hand side of the assignment should be independent. |
template<class AE> |
A computed assignment operator. Subtracts the matrix expression from the sub matrix. |
template<class AE> |
Subtracts a matrix expression from the sub matrix. Left and right hand side of the assignment should be independent. |
template<class AT> |
A computed assignment operator. Multiplies the sub matrix with a scalar. |
template<class AT> |
A computed assignment operator. Divides the sub matrix through a scalar. |
void swap (matrix_range &mr) |
Swaps the contents of the sub matrices. |
const_iterator1 begin1 () const |
Returns a const_iterator1 pointing to the
beginning of the matrix_range . |
const_iterator1 end1 () const |
Returns a const_iterator1 pointing to the end of
the matrix_range . |
iterator1 begin1 () |
Returns a iterator1 pointing to the beginning of
the matrix_range . |
iterator1 end1 () |
Returns a iterator1 pointing to the end of the
matrix_range . |
const_iterator2 begin2 () const |
Returns a const_iterator2 pointing to the
beginning of the matrix_range . |
const_iterator2 end2 () const |
Returns a const_iterator2 pointing to the end of
the matrix_range . |
iterator2 begin2 () |
Returns a iterator2 pointing to the beginning of
the matrix_range . |
iterator2 end2 () |
Returns a iterator2 pointing to the end of the
matrix_range . |
const_reverse_iterator1 rbegin1 () const |
Returns a const_reverse_iterator1 pointing to the
beginning of the reversed matrix_range . |
const_reverse_iterator1 rend1 () const |
Returns a const_reverse_iterator1 pointing to the
end of the reversed matrix_range . |
reverse_iterator1 rbegin1 () |
Returns a reverse_iterator1 pointing to the
beginning of the reversed matrix_range . |
reverse_iterator1 rend1 () |
Returns a reverse_iterator1 pointing to the end of
the reversed matrix_range . |
const_reverse_iterator2 rbegin2 () const |
Returns a const_reverse_iterator2 pointing to the
beginning of the reversed matrix_range . |
const_reverse_iterator2 rend2 () const |
Returns a const_reverse_iterator2 pointing to the
end of the reversed matrix_range . |
reverse_iterator2 rbegin2 () |
Returns a reverse_iterator2 pointing to the
beginning of the reversed matrix_range . |
reverse_iterator2 rend2 () |
Returns a reverse_iterator2 pointing to the end of
reversed the matrix_range . |
The free subrange
functions support the construction
of matrix ranges.
template<class M>
matrix_range<M> subrange (M &data,
M::size_type start1, M::size_type stop1, M::size_type start2, M::size_type, stop2);
template<class M>
const matrix_range<const M> subrange (const M &data,
M::size_type start1, M::size_type stop1, M::size_type start2, M::size_type, stop2);
The free project
functions support the construction
of matrix ranges. Existing matrix_range
's can be composed with further ranges. The resulting ranges are computed using this existing ranges' compose
function.
template<class M>
matrix_range<M> project (M &data, const range &r1, const range &r2);
template<class M>
const matrix_range<const M> project (const M &data, const range &r1, const range &r2);
template<class M>
matrix_range<M> project (matrix_range<M> &data, const range &r1, const range &r2);
template<class M>
const matrix_range<M> project (const matrix_range<M> &data, const range &r1, const range &r2);
Defined in the header matrix_proxy.hpp.
M
is a model of Matrix Expression .Quadratic depending from the size of the ranges.
#include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/matrix_proxy.hpp> #include <boost/numeric/ublas/io.hpp> int main () { using namespace boost::numeric::ublas; matrix<double> m (3, 3); for (unsigned i = 0; i < m.size1 (); ++ i) for (unsigned j = 0; j < m.size2 (); ++ j) project (m, range (0, 3), range (0, 3)) (i, j) = 3 * i + j; std::cout << project (m, range (0, 3), range (0, 3)) << std::endl; }
The templated class matrix_slice<M>
allows
addressing a sliced sub matrix of a matrix.
#include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/matrix_proxy.hpp> #include <boost/numeric/ublas/io.hpp> int main () { using namespace boost::numeric::ublas; matrix<double> m (3, 3); matrix_slice<matrix<double> > ms (m, slice (0, 1, 3), slice (0, 1, 3)); for (unsigned i = 0; i < ms.size1 (); ++ i) for (unsigned j = 0; j < ms.size2 (); ++ j) ms (i, j) = 3 * i + j; std::cout << ms << std::endl; }
Defined in the header matrix_proxy.hpp.
Parameter | Description | Default |
---|---|---|
M |
The type of matrix referenced. |
If the specified slices fall outside that of the index range of
the matrix, then the matrix_slice
is not a well formed
Matrix Expression. That is, access to an element which is outside
of the matrix is undefined.
None, except for those imposed by the requirements of Matrix Expression .
matrix_expression<matrix_slice<M> >
Member | Description |
---|---|
matrix_slice (matrix_type &data, |
Constructs a sub matrix. |
size_type size1 () const |
Returns the number of rows. |
size_type size2 () const |
Returns the number of columns. |
const_reference operator () (size_type i, size_type j)
const |
Returns the value of the j -th element in the
i -th row. |
reference operator () (size_type i, size_type
j) |
Returns a reference of the j -th element in the
i -th row. |
matrix_slice &operator = (const matrix_slice
&ms) |
The assignment operator. |
matrix_slice &assign_temporary (matrix_slice
&ms) |
Assigns a temporary. May change the matrix slice
ms . |
template<class AE> |
The extended assignment operator. |
template<class AE> |
Assigns a matrix expression to the sub matrix. Left and right hand side of the assignment should be independent. |
template<class AE> |
A computed assignment operator. Adds the matrix expression to the sub matrix. |
template<class AE> |
Adds a matrix expression to the sub matrix. Left and right hand side of the assignment should be independent. |
template<class AE> |
A computed assignment operator. Subtracts the matrix expression from the sub matrix. |
template<class AE> |
Subtracts a matrix expression from the sub matrix. Left and right hand side of the assignment should be independent. |
template<class AT> |
A computed assignment operator. Multiplies the sub matrix with a scalar. |
template<class AT> |
A computed assignment operator. Multiplies the sub matrix through a scalar. |
void swap (matrix_slice &ms) |
Swaps the contents of the sub matrices. |
const_iterator1 begin1 () const |
Returns a const_iterator1 pointing to the
beginning of the matrix_slice . |
const_iterator1 end1 () const |
Returns a const_iterator1 pointing to the end of
the matrix_slice . |
iterator1 begin1 () |
Returns a iterator1 pointing to the beginning of
the matrix_slice . |
iterator1 end1 () |
Returns a iterator1 pointing to the end of the
matrix_slice . |
const_iterator2 begin2 () const |
Returns a const_iterator2 pointing to the
beginning of the matrix_slice . |
const_iterator2 end2 () const |
Returns a const_iterator2 pointing to the end of
the matrix_slice . |
iterator2 begin2 () |
Returns a iterator2 pointing to the beginning of
the matrix_slice . |
iterator2 end2 () |
Returns a iterator2 pointing to the end of the
matrix_slice . |
const_reverse_iterator1 rbegin1 () const |
Returns a const_reverse_iterator1 pointing to the
beginning of the reversed matrix_slice . |
const_reverse_iterator1 rend1 () const |
Returns a const_reverse_iterator1 pointing to the
end of the reversed matrix_slice . |
reverse_iterator1 rbegin1 () |
Returns a reverse_iterator1 pointing to the
beginning of the reversed matrix_slice . |
reverse_iterator1 rend1 () |
Returns a reverse_iterator1 pointing to the end of
the reversed matrix_slice . |
const_reverse_iterator2 rbegin2 () const |
Returns a const_reverse_iterator2 pointing to the
beginning of the reversed matrix_slice . |
const_reverse_iterator2 rend2 () const |
Returns a const_reverse_iterator2 pointing to the
end of the reversed matrix_slice . |
reverse_iterator2 rbegin2 () |
Returns a reverse_iterator2 pointing to the
beginning of the reversed matrix_slice . |
reverse_iterator2 rend2 () |
Returns a reverse_iterator2 pointing to the end of
the reversed matrix_slice . |
The free subslice
functions support the construction
of matrix slices.
template<class M>
matrix_slice<M> subslice (M &data,
M::size_type start1, M::difference_type stride1, M::size_type size1,
M::size_type start2, M::difference_type stride2, M::size_type size2);
template<class M>
const matrix_slice<const M> subslice (const M &data,
M::size_type start1, M::difference_type stride1, M::size_type size1,
M::size_type start2, M::difference_type stride2, M::size_type size2);
The free project
functions support the construction
of matrix slices. Existing matrix_slice
's can be composed with further ranges or slices. The resulting slices are computed using this existing slices' compose
function.
template<class M>
matrix_slice<M> project (M &data, const slice &s1, const slice &s2);
template<class M>
const matrix_slice<const M> project (const M &data, const slice &s1, const slice &s2);
template<class M>
matrix_slice<M> project (matrix_slice<M> &data, const range &r1, const range &r2);
template<class M>
const matrix_slice<M> project (const matrix_slice<M> &data, const range &r1, const range &r2);
template<class M>
matrix_slice<M> project (matrix_slice<M> &data, const slice &s1, const slice &s2);
template<class M>
const matrix_slice<M> project (const matrix_slice<M> &data, const slice &s1, const slice &s2);
Defined in the header matrix_proxy.hpp.
M
is a model of Matrix Expression .Quadratic depending from the size of the slices.
#include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/matrix_proxy.hpp> #include <boost/numeric/ublas/io.hpp> int main () { using namespace boost::numeric::ublas; matrix<double> m (3, 3); for (unsigned i = 0; i < m.size1 (); ++ i) for (unsigned j = 0; j < m.size2 (); ++ j) project (m, slice (0, 1, 3), slice (0, 1, 3)) (i, j) = 3 * i + j; std::cout << project (m, slice (0, 1, 3), slice (0, 1, 3)) << std::endl; }
Copyright (©) 2000-2002 Joerg Walter, Mathias Koch
Use, modification and distribution are subject to the
Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt
or copy at
http://www.boost.org/LICENSE_1_0.txt
).