layout: post
title: “Eigen - The Array class”
date: 2019-5-28
description: “Eigen说明文档(1.3)”
tag: Eigen
介绍Array 类和其相关的系数运算方式
什么是Array类?
Array类跟前面介绍的Matrix相似,不过在形式和运算方式上略有区别。Array主要用于线性代数的运算中。
Array类的形式如下:
Array<typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime>
![](/doc_imgae/Eigen/3/1.png)
以ArrayNt 为例,其表示的是一维的数组,N和t分别表示数组大小和数值类型。对于二维的数组,通常采用ArrayNNt的形式。
Array数组赋值
![](/doc_imgae/Eigen/3/2.png)
Array数组的赋值方式可以参见上图,具体形式与Matrix相同。这里就不再赘述。
Array数组的数学运算
![](/doc_imgae/Eigen/3/3.png)
![](/doc_imgae/Eigen/3/4.png)
![](/doc_imgae/Eigen/3/5.png)
Array数组的加减运算与MAtrix相同,不过,如果两个Array,a,b之间的运算就要求数组a和数组b的形式相同。
需要特殊注意的是,Array的乘法运算是相应元素之间的运算。这是与Matrix最大的区别。
相应的Array提供了一系列相关的函数运算:
- .abs() :对数组中的元素求绝对值
- .sqrt() :对数组的元素开根号
- .min() :这个函数是比较两个Array数组,相应位置上取二者较小值
Array数组与Matrix数组之间的转化
![](/doc_imgae/Eigen/3/6.png)
![](/doc_imgae/Eigen/3/7.png)
Matrix 和 Array 数组之间的转换可以通过函数:.array() 、.matrix()实现。而且,Matrix也可以调用函数.cwiseProduct()实现Array的数值运算方式。
而且,Matrix 和Array在数组形式相同的情况下支持相互赋值。
*转载请注明原地址,邓辉的博客:[https://github.com/my-lord/mylord.github.io](https://github.com/my-lord/mylord.github.io) 谢谢!*