博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Eigen教程(9)
阅读量:7002 次
发布时间:2019-06-27

本文共 1005 字,大约阅读时间需要 3 分钟。

整理下Eigen库的教程,参考:

Eigen并没有为matrix提供直接的Reshape和Slicing的API,但是这些特性可以通过Map类来实现。

Reshape

reshape操作是改变matrix的尺寸大小但保持元素不变。采用的方法是创建一个不同“视图” Map。

MatrixXf M1(3,3);    // Column-major storageM1 << 1, 2, 3,      4, 5, 6,      7, 8, 9;Map
v1(M1.data(), M1.size());cout << "v1:" << endl << v1 << endl;Matrix
M2(M1);Map
v2(M2.data(), M2.size());cout << "v2:" << endl << v2 << endl;

输出

v1:1 4 7 2 5 8 3 6 9v2:1 2 3 4 5 6 7 8 9

reshape 2*6的矩阵到 6*2

MatrixXf M1(2,6);    // Column-major storageM1 << 1, 2, 3,  4,  5,  6,      7, 8, 9, 10, 11, 12;Map
M2(M1.data(), 6,2);cout << "M2:" << endl << M2 << endl;

输出

M2: 1  4 7 10 2  5 8 11 3  6 9 12

Slicing

也是通过Map实现的,比如:每p个元素获取一个。

RowVectorXf v = RowVectorXf::LinSpaced(20,0,19);cout << "Input:" << endl << v << endl;Map
<2> > v2(v.data(), v.size()/2);cout << "Even:" << v2 << endl;

输出

Input: 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19Even: 0  2  4  6  8 10 12 14 16 18

转载地址:http://pnrvl.baihongyu.com/

你可能感兴趣的文章