Eigen 線形代数ライブラリ関連のチュートリアル

重要な注意事項: この記事はオンライン情報から編集されたものであり、ブロガーが関連する知識ポイントを学習するプロセスを記録しているだけであり、削除されていません。

1. 参考資料

eigen 公式ウェブサイト
eigen ライブラリ学習ノートeigen 固有四元数の
いくつかの関数の紹介
、オイラー角、回転行列、回転ベクトル
eigen の 3 次元姿勢表現と相互変換
SLAM 本質分析 - Eigen

2. 関連紹介

1. エイゲンの紹介

Eigen ライブラリは、行列に対する高速な線形代数演算、行列およびベクトル演算、数値解析および関連アルゴリズムを提供するオープン ソースの C++ 線形代数ライブラリであり、方程式を解くなどの機能も含まれています。

2. ベクトルの内積と外積

ベクトル内積と外積の概念と幾何学的重要性

3. 行列行列クラス

1. マトリックスマトリックス

Matrix<typename, int Rows, int Cols>
// 定义一个3x3的float型的矩阵a
Matrix<float, 3, 3> a;

2.ベクトル

// 定义列向量,3行1列,float类型
typedef Matrix<float, 3, 1> Vector3f;

// 定义行向量,1行2列,int类型
typedef Matrix<int, 1, 2> RowVector2i;

3. ダイナミックマトリックス

Eigen の行列の場合、コンパイル段階で行列サイズ ( rowsum )を指定する必要はなく、 を使用して行列サイズを指定できます。colDynamic

// 定义一个未知大小的动态矩阵,元素类型为 `float`
typedef Matrix<float, Dynamic, Dynamic> MatrixXf;

// 定义一个未知大小的动态矩阵,元素类型为 `double`
typedef Matrix<double, Dynamic, Dynamic> MatrixXd;

// 定义一个行数未知的动态向量,元素类型为 `int`
typedef Matrix<int, Dynamic, 1> VectorXi;

// 定义一个行数未知的动态向量,元素类型为 `float`
typedef Matrix<float, Dynamic, 1> VectorXf;

// 定义一个行数为3,列数未知的动态矩阵,元素类型为 `float`
Matrix<float, 3, Dynamic> a;

4. マトリックスの構築

動的行列/ベクトルを構築する

// 构建一个3x3的矩阵,元素类型为 `float`
Matrix3f a;

// 构建一个3x3的动态矩阵,大小为0x0,元素类型为 `float`
MatrixXf b;

// 构建一个10x15的动态矩阵
MatrixXf c(10, 15);

// 构建一个长度为30的动态列向量,元素类型为 `float`
VectorXf d(30);

固定行列/ベクトルを構築する

// 构建一个长度为2的列向量,元素类型为 `double`
Vector2d e(5.0, 6.0);

// 构建一个长度为3的列向量,元素类型为 `double`
Vector3d f(5.0, 6.0, 7.0);

// 构建一个长度为4的列向量,元素类型为 `double`
Vector4d g(5.0, 6.0, 7.0, 8.0);

4. 配列配列クラス

Array<typename Scalar, int Rows, int Cols>

配列は 1 次元配列と 2 次元配列を表すことができます。

Array<float, Dynamic, 1> ArrayXf;

Array<float, 3, 1> Array3f;

Array<double, Dynamic, Dynamic> ArrayXXd;

Array<double, 3, 3> Array33d;

1. 配列を構築する

ArrayXXf m(2, 2);
m << 1.0, 2.0,
	3.0, 4.0;

m(0, 0) = 1.0; m(0, 1) = 2.0;
m(1, 0;) = 3.0; m(1, 1) = m(0, 1)+m(1, 0);

2. 行列クラスと配列クラス

線形代数に関連する演算が必要な場合は行列クラスを使用し、要素レベルの演算のみが必要な場合は配列クラスを使用します。

  • 行列クラスを配列クラスに変換します: .array();
  • 配列クラスを行列クラスに変換します: .matrix()

5.Eigen関連の経験

1.Eigenをインストールする

自分の

# 安装eigen
sudo apt-get install libeigen3-dev

2.エイゲンに電話する

2.1 設定CMakeList.txtファイル

find_package(……Eigen3 REQUIRED)

2.2 ヘッダーファイルのインポート

#include <Eigen/Eigen>

3.Eigenの共通構文

// 创建了一个 3*3的矩阵
MatrixXd m = MatrixXd::Random(3, 3);

// 矩阵数据的获取
m.rows();//获取行数
m.cols();//获取列数
m.size();//获取系数

// 改变resize
m.resize(4, 4);

おすすめ

転載: blog.csdn.net/m0_37605642/article/details/132245469