1 子矩阵操作简介
本文翻译自官方的 Using block operations。这篇文章只是我在学习的时候做的记录,可能有些陈旧了,建议直接看官方的文档。
子矩阵操作又称块操作,在矩阵运算中,子矩阵的提取和操作应用也十分广泛。因此Eigen中也提供了相关操作的方法。提取的子矩阵在操作过程中既可以用作左值也可以用作右值。
2 块操作的一般使用方法
在Eigen中最基本的快操作运算是用.block()完成的。提取的子矩阵同样分为动态大小和固定大小。
块操作
构建动态大小子矩阵
构建固定大小子矩阵
提取块大小为(p,q),起始于(i,j)
matrix.block(i,j,p,q)
matrix.block
(i,j)
同样需要注意的是在Eigen中,索引是从0开始。所有的操作方法都可以适用于Array.同样使用固定大小的操作方式在小型矩阵运算时更加的快,但要求在编译时就要知道矩阵的大小。
下面是一个使用示例:
#include
#include "Eigen/Dense"
using namespace std;
using namespace Eigen;
int main()
{
MatrixXf m(4,4);
m<<1,2,3,4,
5,6,7,8,
9,10,11,12,
13,14,15,16;
cout<
cout<(1,1)<
for(int i = 1;i <= 3;++i)
{