邓辉

个人站

欢迎来到我的个人站~


Eigen - Advanced initialization

初始化拓展

这一节主要介绍矩阵/数组的初始化。

常用的初始化方式

Eigen 重写了C++的输入/输出符号« / » 实现对矩阵和vector的赋值和输出。Eigen的赋值是按照先行后列的形式。 注意图2可以发现,Eigen 还支持两个小的vector对一个长的vector进行赋值。但是需要注意的是,两个小的vector大小的和要等与长vector的大小。 该形式同样也支持Matrix,具体形式可见图3.

特殊的矩阵和数组

如图4、5、6所示,Eigen支持:

  • Zero() –全部置0
  • Constant() –置为某个相同值
  • Random() –置为(-1,1)的随机值
  • Identity() –置为单位矩阵
  • LineSpace(size,low,high) –这个只能用于vector、和一维的array 。其功能是初始化size长的数组,数值按照low - high 之间线性插值。

以上函数都是靠返回值的形式给矩阵/数值赋值,以下函数是直接改变矩阵的数值。

  • setZero()
  • MatrixBase::setIdentity()
  • DenseBase::setLinSpaced()

如图6所示,Eigen还支持取局部的块进行赋值。

使用临时对象

如图7、8所示,Eigen可以使用matrixXd::Random(3,3)等形式构造一个3*3的临时矩阵对现有的对象进行赋值。 第二张图中,为啥一定要用.finished()函数将临时对象转化为真实对象有点看不懂。

that’s all.


转载请注明原地址,邓辉的博客:https://github.com/my-lord/mylord.github.io 谢谢!

Don’t Panic.

请各位大佬多多打赏


打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦