学习日记【Eigen】:熟悉初始化

Eigen::Matrix3d::Random();

生成3x3随机矩阵

Eigen::Matrix3d::Constant(n);

生成3x3常数矩阵

Matrix模板类

typedef Matrix<float 4,4> Matrix4f;

Vector2d a(5.0,6.0);

生成2x1的向量,值为5.0,6.0

Matrix<int 5,1> b = {1,2,3,4,5};

生成5x1的矩阵,值为1,2,3,4,5

MatrixXi a{{1,2},{3,4}};

生成2x2的矩阵

Matrix<double 2,2> b {{1,2},{3,4}};

生成2x2矩阵

m.resize(n,n);

resize后,数据丢失

m.reshaped(n,m);

reshaped后,数据不丢失,reshape的顺序有点奇怪

m.rows() m.cols()

获取列,行

+ - += -=

与numpy运算方法相同,矩阵间的运算

/ * /= *=

与常数的运算

m.transpose()

转置

m.conjugate()

共轭

m.transposeInPlace();

转置重写

m.sum();

m.prod();

m.mean();

m.minCoeff();

m.maxCoeff();

m.trace();

std::ptrdiff_t i.j; // Eigen::Index i,j;

float minOfM = m.minCoeff(&i,&j);

返回最小值与其下标

Array 具体形式与Matrix相同,但相乘时,array1 * array2 是对应位置点乘

a.abs()

a.sqrt().sin().cos()

(m.array() + 4).matrix() *m

array与matrix转化的复合操作

m.block(i,j,w,h)

块操作,start,start,w,h

m.block(i0,j0,w,h) = m.block(i1,j1,w,h)

m.row(i) m.col(i);

取行和列

m.leftCols(2);

左边的2列

m.bottomRows(2);

下面的2行

v.head(3)

vector前3个

v.tail(3)

vector后3个

v.segment(1,4)

vector1~4的单元

切片

seq(firstIdx,lastIdx) <=> seq(2,5)<=> {2,3,4,5}

seq(firstIdx,lastIdx,incr) <=> seq(2,8,2)<=>{2,4,6,8}

seqN(firstIdx,size) <=> seqN(2,5) <=> {2,3,4,5,6}

seqN(firstIdx,size,incr) <=> seqN(2,3,3) <=> {2,5,8}

Eigen::placeholders::

A(seq(i,last),seqN(0,n));

A(last/2,Eigen::placeholders::all);

(a>0).all()

(a>0).any()

(a>0).count()

m.colwise().maxCoeff();

按列操作,求最大值

m.colwise().sum().maxCoeff(&maxIndex);

按列操作,求最大值与最大值索引

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值