mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-09-25 15:53:19 +08:00
Extend tutorial page on broadcasting to reflect recent changes.
This commit is contained in:
parent
b85bcd91bf
commit
a0bcaa88af
@ -561,7 +561,7 @@ template<typename ExpressionType, int Direction> class VectorwiseOp
|
|||||||
* Example: \include MatrixBase_colwise.cpp
|
* Example: \include MatrixBase_colwise.cpp
|
||||||
* Output: \verbinclude MatrixBase_colwise.out
|
* Output: \verbinclude MatrixBase_colwise.out
|
||||||
*
|
*
|
||||||
* \sa rowwise(), class VectorwiseOp
|
* \sa rowwise(), class VectorwiseOp, \ref TutorialReductionsVisitorsBroadcasting
|
||||||
*/
|
*/
|
||||||
template<typename Derived>
|
template<typename Derived>
|
||||||
inline const typename DenseBase<Derived>::ConstColwiseReturnType
|
inline const typename DenseBase<Derived>::ConstColwiseReturnType
|
||||||
@ -572,7 +572,7 @@ DenseBase<Derived>::colwise() const
|
|||||||
|
|
||||||
/** \returns a writable VectorwiseOp wrapper of *this providing additional partial reduction operations
|
/** \returns a writable VectorwiseOp wrapper of *this providing additional partial reduction operations
|
||||||
*
|
*
|
||||||
* \sa rowwise(), class VectorwiseOp
|
* \sa rowwise(), class VectorwiseOp, \ref TutorialReductionsVisitorsBroadcasting
|
||||||
*/
|
*/
|
||||||
template<typename Derived>
|
template<typename Derived>
|
||||||
inline typename DenseBase<Derived>::ColwiseReturnType
|
inline typename DenseBase<Derived>::ColwiseReturnType
|
||||||
@ -586,7 +586,7 @@ DenseBase<Derived>::colwise()
|
|||||||
* Example: \include MatrixBase_rowwise.cpp
|
* Example: \include MatrixBase_rowwise.cpp
|
||||||
* Output: \verbinclude MatrixBase_rowwise.out
|
* Output: \verbinclude MatrixBase_rowwise.out
|
||||||
*
|
*
|
||||||
* \sa colwise(), class VectorwiseOp
|
* \sa colwise(), class VectorwiseOp, \ref TutorialReductionsVisitorsBroadcasting
|
||||||
*/
|
*/
|
||||||
template<typename Derived>
|
template<typename Derived>
|
||||||
inline const typename DenseBase<Derived>::ConstRowwiseReturnType
|
inline const typename DenseBase<Derived>::ConstRowwiseReturnType
|
||||||
@ -597,7 +597,7 @@ DenseBase<Derived>::rowwise() const
|
|||||||
|
|
||||||
/** \returns a writable VectorwiseOp wrapper of *this providing additional partial reduction operations
|
/** \returns a writable VectorwiseOp wrapper of *this providing additional partial reduction operations
|
||||||
*
|
*
|
||||||
* \sa colwise(), class VectorwiseOp
|
* \sa colwise(), class VectorwiseOp, \ref TutorialReductionsVisitorsBroadcasting
|
||||||
*/
|
*/
|
||||||
template<typename Derived>
|
template<typename Derived>
|
||||||
inline typename DenseBase<Derived>::RowwiseReturnType
|
inline typename DenseBase<Derived>::RowwiseReturnType
|
||||||
|
@ -191,12 +191,27 @@ This can be accomplished with:
|
|||||||
\verbinclude Tutorial_ReductionsVisitorsBroadcasting_broadcast_simple.out
|
\verbinclude Tutorial_ReductionsVisitorsBroadcasting_broadcast_simple.out
|
||||||
</td></tr></table>
|
</td></tr></table>
|
||||||
|
|
||||||
|
We can interpret the instruction <tt>mat.colwise() += v</tt> in two equivalent ways. It adds the vector \c v
|
||||||
|
to every column of the matrix. Alternatively, it can be interpreted as repeating the vector \c v four times to
|
||||||
|
form a four-by-two matrix which is then added to \c mat:
|
||||||
|
\f[
|
||||||
|
\begin{bmatrix} 1 & 2 & 6 & 9 \\ 3 & 1 & 7 & 2 \end{bmatrix}
|
||||||
|
+ \begin{bmatrix} 0 & 0 & 0 & 0 \\ 1 & 1 & 1 & 1 \end{bmatrix}
|
||||||
|
= \begin{bmatrix} 1 & 2 & 6 & 9 \\ 4 & 2 & 8 & 3 \end{bmatrix}.
|
||||||
|
\f]
|
||||||
|
The operators <tt>-=</tt>, <tt>+</tt> and <tt>-</tt> can also be used column-wise and row-wise. On arrays, we
|
||||||
|
can also use the operators <tt>*=</tt>, <tt>/=</tt>, <tt>*</tt> and <tt>/</tt> to perform coefficient-wise
|
||||||
|
multiplication and division column-wise or row-wise. These operators are not available on matrices because it
|
||||||
|
is not clear what they would do. If you want multiply column 0 of a matrix \c mat with \c v(0), column 1 with
|
||||||
|
\c v(1), and so on, then use <tt>mat = mat * v.asDiagonal()</tt>.
|
||||||
|
|
||||||
It is important to point out that the vector to be added column-wise or row-wise must be of type Vector,
|
It is important to point out that the vector to be added column-wise or row-wise must be of type Vector,
|
||||||
and cannot be a Matrix. If this is not met then you will get compile-time error. This also means that
|
and cannot be a Matrix. If this is not met then you will get compile-time error. This also means that
|
||||||
broadcasting operations can only be applied with an object of type Vector, when operating with Matrix.
|
broadcasting operations can only be applied with an object of type Vector, when operating with Matrix.
|
||||||
The same applies for the Array class, where the equivalent for VectorXf is ArrayXf.
|
The same applies for the Array class, where the equivalent for VectorXf is ArrayXf. As always, you should
|
||||||
|
not mix arrays and matrices in the same expression.
|
||||||
|
|
||||||
Therefore, to perform the same operation row-wise we can do:
|
To perform the same operation row-wise we can do:
|
||||||
|
|
||||||
<table class="example">
|
<table class="example">
|
||||||
<tr><th>Example:</th><th>Output:</th></tr>
|
<tr><th>Example:</th><th>Output:</th></tr>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user