初始化拓展


layout: post
title: “Eigen - Advanced initialization”
date: 2019-5-28
description: “Eigen说明文档(1.5)”
tag: Eigen

初始化拓展

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

常用的初始化方式

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](https://github.com/my-lord/mylord.github.io) 谢谢!*

Don’t Panic.

请各位大佬多多打赏


你可能感兴趣的:(Eigen)