Eigen官网教程(3) 块操作

这节介绍块操作的必要性。块指的是矩阵或数组中的一个矩形区域,块表达式可以用于左值或者右值,同样不会耗费运行时间,由编译器优化。

1.使用块操作

Eigen中最常用的块操作是block()方法,共有两个版本

索引从0开始。两个版本都可用于固定尺寸或者动态尺寸的矩阵和数组。这两个表达式语义上相同,唯一的区别是如果块的尺寸比较小的话固定尺寸版本的块操作运行更快,但是需要在编译阶段知道大小。

上述例子中的块操作方法作为表达式的右值,意味着是只读形式的,然而,块操作也可以作为左值使用,意味着你可以给他赋值。下面的例子说明了这一点,当然对于矩阵的操作是一样的。

尽管block()方法可用于任何形式的块操作,还是有特殊的方法API用于特殊情况的,主要是为了更好的性能。说到性能,最重要的是在编译阶段给Eigen尽可能多的信息。比如,如果你的块是一个矩阵中的一列,那么使用col()方法会更好。本节其余的介绍都是关于这些特殊的方法的。

2行和列

行和列是一中特殊的块。Eigen提供了特殊的方法:col() 列 row() 行

3边角相关的操作

Eigen同样提供了对于挨着矩阵或数组的边、角的特殊操作方法,比如topLeftCorner()方法可用于操作矩阵左上角的区域。总结如下:

4对于向量的块操作

Eigen也提供了一些针对向量和一维数组的块操作方法:


版权声明:本文为SKANK911原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。