Eigen学习笔记(6)-高级初始化

原文:Eigen官网-Advanced initialization

本篇介绍几种矩阵初始化的高级方法,重点介绍逗号初始化和特殊矩阵(单位阵、零阵)。

1. 逗号初始化

(1)Eigen提供了逗号操作符允许我们方便地为矩阵/向量/数组中的元素赋值。按从左到右,从上到下的顺序列出所有元素,并用逗号进行分隔。需要注意的是,对象的尺寸需要事先指定,而且所列出的元素数目要和操作对象的尺寸大小一致。

(2)初始化列表不仅可以是数值也可以是vectors或matrices。一个常用的应用就是将不同的vector或者matrices联结到一起。需要注意的是,在使用逗号初始化方式之前必须要先设定vectors或者matrices的尺寸大小。

示例如下:

RowVectorXd vec1(3);
vec1 << 1, 2, 3;
std::cout << "vec1 = " << vec1 << std::endl;
RowVectorXd vec2(4);
vec2 << 1, 4, 9, 16;
std::cout << "vec2 = " << vec2 << std::endl;
RowVectorXd joined(7);
joined << vec1, vec2;
std::cout << "joined = " << joined << std::endl;

结果如下:

vec1 = 1 2 3
vec2 =  1  4  9 16
joined =  1  2  3  1  4  9 16

(3)也可以使用块结构对矩阵进行初始化。

示例如下:

MatrixXf matA(2, 2);
matA << 1, 2, 3, 4;
MatrixXf matB(4, 4);
matB << matA, matA/10, matA/10, matA;
std::cout << matB << std::endl;

结果如下:

 1   2 0.1 0.2
  3   4 0.3 0.4
0.1 0.2   1   2
0.3 0.4   3   4

(4)逗号表达式也可以用来对块表达式进行赋值。

示例如下:

Matrix3f m;
m.row(0) << 1, 2
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值