1namespace Eigen { 2 3/** \eigenManualPage TutorialReshapeSlicing Reshape and Slicing 4 5%Eigen does not expose convenient methods to take slices or to reshape a matrix yet. 6Nonetheless, such features can easily be emulated using the Map class. 7 8\eigenAutoToc 9 10\section TutorialReshape Reshape 11 12A reshape operation consists in modifying the sizes of a matrix while keeping the same coefficients. 13Instead of modifying the input matrix itself, which is not possible for compile-time sizes, the approach consist in creating a different \em view on the storage using class Map. 14Here is a typical example creating a 1D linear view of a matrix: 15 16<table class="example"> 17<tr><th>Example:</th><th>Output:</th></tr> 18<tr><td> 19\include Tutorial_ReshapeMat2Vec.cpp 20</td> 21<td> 22\verbinclude Tutorial_ReshapeMat2Vec.out 23</td></tr></table> 24 25Remark how the storage order of the input matrix modifies the order of the coefficients in the linear view. 26Here is another example reshaping a 2x6 matrix to a 6x2 one: 27<table class="example"> 28<tr><th>Example:</th><th>Output:</th></tr> 29<tr><td> 30\include Tutorial_ReshapeMat2Mat.cpp 31</td> 32<td> 33\verbinclude Tutorial_ReshapeMat2Mat.out 34</td></tr></table> 35 36 37 38\section TutorialSlicing Slicing 39 40Slicing consists in taking a set of rows, columns, or elements, uniformly spaced within a matrix. 41Again, the class Map allows to easily mimic this feature. 42 43For instance, one can skip every P elements in a vector: 44<table class="example"> 45<tr><th>Example:</th><th>Output:</th></tr> 46<tr><td> 47\include Tutorial_SlicingVec.cpp 48</td> 49<td> 50\verbinclude Tutorial_SlicingVec.out 51</td></tr></table> 52 53One can olso take one column over three using an adequate outer-stride or inner-stride depending on the actual storage order: 54<table class="example"> 55<tr><th>Example:</th><th>Output:</th></tr> 56<tr><td> 57\include Tutorial_SlicingCol.cpp 58</td> 59<td> 60\verbinclude Tutorial_SlicingCol.out 61</td></tr></table> 62 63*/ 64 65} 66