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) 谢谢!*