如何使用Eigen库进行矩阵运算?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1114个文字,预计阅读时间需要5分钟。
了解C++的Eigen库,主要内容来自:https://blog.csdn.net/hongge_smile/article/details/107296658,并加入自己的笔记。
Eigen是一个C++模板库,用于线性代数:矩阵、向量、数值求解器和相关操作。它提供了高效的矩阵和向量运算,支持多种数据类型和运算符重载,方便进行科学计算和工程应用。
Eigen库特点:
1.高效:使用模板元编程技术,实现快速运算。
2.易用:提供丰富的API,支持常见的线性代数操作。
3.可扩展:支持自定义数据类型和运算符。
4.跨平台:支持多种操作系统和编译器。
Eigen主要功能:
- 矩阵和向量的创建、赋值、运算。- 矩阵分解、求解线性方程组。- 特征值和特征向量的计算。- 矩阵求逆、条件数、范数等。- 线性规划、优化问题求解。使用Eigen的步骤:
1.包含Eigen头文件。
2.创建矩阵和向量对象。
3.使用Eigen提供的函数进行运算。
例如,以下代码展示了如何使用Eigen计算矩阵的逆:
cpp
#includeint main() { Eigen::MatrixXd matrix(3, 3); matrix <<1, 2, 3, 4, 5, 6, 7, 8, 9;
Eigen::MatrixXd inverse=matrix.inverse();
std::cout << Inverse of the matrix: < return 0;} 总结:Eigen是一个功能强大的C++线性代数库,适用于各种科学计算和工程应用。掌握Eigen库,可以大大提高编程效率。 了解C++的Eigen库,主要内容来自:blog.csdn.net/hongge_smile/article/details/107296658 Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms Eigen是一个有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法的C ++开源库。 eigen官网链接:eigen.tuxfamily.org/index.php?title=Main_Page 环境:MacOS+Clion 下载:eigen.tuxfamily.org/index.php?title=Main_Page 使用分两种情况:1、直接用;2、打包好再用 在CMakeLists文件中加上: 头文件在:/usr/local/include/eigen3 在CMakeLists文件中加上: 最后附上Windows上安装:blog.csdn.net/huangjunsheng123/article/details/112380581 库中头文件和文件中的类介绍: 1、Eigen库的学习(一)
介绍
,并加入自己的笔记。
文档:eigen.tuxfamily.org/dox/
include_directories(解压地址)
编译安装后使用
#编译
cd eigen-3.3.9
mkdir build
cd build
cmake ..
#安装
make install
静态库:/usr/local/lib/engines-3find_package(Eigen3 REQUIRED)
include_directories(${EIGEN3_INCLUDE_DIR})
简单使用
一般为了省事,可以直接导入#include <Eigen/Dense> 或者#include <Eigen/Eigen> //矩阵定义和初始化
MatrixXd m(2,2); // MatrixXd 表示的是动态数组,初始化的时候指定数组的行数和列数
m(0,0) = 3; //m(i,j) 表示第i行第j列的值,这里对数组进行初始化
m(1,0) = 2.5;
m(0,1) = -1;
m(1,1) = m(1,0) + m(0,1);
cout <<"m=\n"<<m <<endl; // eigen重载了<<运算符,可以直接输出eigen矩阵的值
Matrix2d c;
c << 1, 2,
3, 4;
cout <<"c=\n"<<c << endl;
MatrixXd d = MatrixXd::Random(3, 3); //初始化动态矩阵m,使用Random函数,初始化的值在[-1,1]区间内,矩阵大小3X3
d = (d + MatrixXd::Constant(3, 3, 1.2)) * 50; // MatrixXd::Constant(3, 3, 1.2)初始化3X3矩阵,矩阵里面的数值为常量,全部为1.2
// Eigen重载了+ 运算符,两个矩阵有相同的行数和列数即可相加,对应位置上的值相加
cout << "d =" << endl << d << endl;
矩阵运算
//矩阵操作
cout<<"转置\n"<<c.transpose()<<endl;
cout<<"伴随\n"<<c.adjoint()<<endl;
cout << "行列式: " << c.determinant() <<endl;
cout << "逆矩阵\n" << c.inverse() <<endl;
cout << "相加:\n"<<m+c<<endl;
VectorXd v(3);
v << 1, 2, 3; //逗号初始化,英文:comma-initializer,Eigen未提供c++11 的{}初始化方式
cout << "矩阵*向量 =\n"<< d * v << endl;
参考
2、www.cnblogs.com/cc111/p/9354924.html
3、www.cnblogs.com/jerry323/p/9097264.html
4、blog.csdn.net/jiajiading/article/details/103369058
本文共计1114个文字,预计阅读时间需要5分钟。
了解C++的Eigen库,主要内容来自:https://blog.csdn.net/hongge_smile/article/details/107296658,并加入自己的笔记。
Eigen是一个C++模板库,用于线性代数:矩阵、向量、数值求解器和相关操作。它提供了高效的矩阵和向量运算,支持多种数据类型和运算符重载,方便进行科学计算和工程应用。
Eigen库特点:
1.高效:使用模板元编程技术,实现快速运算。
2.易用:提供丰富的API,支持常见的线性代数操作。
3.可扩展:支持自定义数据类型和运算符。
4.跨平台:支持多种操作系统和编译器。
Eigen主要功能:
- 矩阵和向量的创建、赋值、运算。- 矩阵分解、求解线性方程组。- 特征值和特征向量的计算。- 矩阵求逆、条件数、范数等。- 线性规划、优化问题求解。使用Eigen的步骤:
1.包含Eigen头文件。
2.创建矩阵和向量对象。
3.使用Eigen提供的函数进行运算。
例如,以下代码展示了如何使用Eigen计算矩阵的逆:
cpp
#includeint main() { Eigen::MatrixXd matrix(3, 3); matrix <<1, 2, 3, 4, 5, 6, 7, 8, 9;
Eigen::MatrixXd inverse=matrix.inverse();
std::cout << Inverse of the matrix: < return 0;} 总结:Eigen是一个功能强大的C++线性代数库,适用于各种科学计算和工程应用。掌握Eigen库,可以大大提高编程效率。 了解C++的Eigen库,主要内容来自:blog.csdn.net/hongge_smile/article/details/107296658 Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms Eigen是一个有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法的C ++开源库。 eigen官网链接:eigen.tuxfamily.org/index.php?title=Main_Page 环境:MacOS+Clion 下载:eigen.tuxfamily.org/index.php?title=Main_Page 使用分两种情况:1、直接用;2、打包好再用 在CMakeLists文件中加上: 头文件在:/usr/local/include/eigen3 在CMakeLists文件中加上: 最后附上Windows上安装:blog.csdn.net/huangjunsheng123/article/details/112380581 库中头文件和文件中的类介绍: 1、Eigen库的学习(一)
介绍
,并加入自己的笔记。
文档:eigen.tuxfamily.org/dox/
include_directories(解压地址)
编译安装后使用
#编译
cd eigen-3.3.9
mkdir build
cd build
cmake ..
#安装
make install
静态库:/usr/local/lib/engines-3find_package(Eigen3 REQUIRED)
include_directories(${EIGEN3_INCLUDE_DIR})
简单使用
一般为了省事,可以直接导入#include <Eigen/Dense> 或者#include <Eigen/Eigen> //矩阵定义和初始化
MatrixXd m(2,2); // MatrixXd 表示的是动态数组,初始化的时候指定数组的行数和列数
m(0,0) = 3; //m(i,j) 表示第i行第j列的值,这里对数组进行初始化
m(1,0) = 2.5;
m(0,1) = -1;
m(1,1) = m(1,0) + m(0,1);
cout <<"m=\n"<<m <<endl; // eigen重载了<<运算符,可以直接输出eigen矩阵的值
Matrix2d c;
c << 1, 2,
3, 4;
cout <<"c=\n"<<c << endl;
MatrixXd d = MatrixXd::Random(3, 3); //初始化动态矩阵m,使用Random函数,初始化的值在[-1,1]区间内,矩阵大小3X3
d = (d + MatrixXd::Constant(3, 3, 1.2)) * 50; // MatrixXd::Constant(3, 3, 1.2)初始化3X3矩阵,矩阵里面的数值为常量,全部为1.2
// Eigen重载了+ 运算符,两个矩阵有相同的行数和列数即可相加,对应位置上的值相加
cout << "d =" << endl << d << endl;
矩阵运算
//矩阵操作
cout<<"转置\n"<<c.transpose()<<endl;
cout<<"伴随\n"<<c.adjoint()<<endl;
cout << "行列式: " << c.determinant() <<endl;
cout << "逆矩阵\n" << c.inverse() <<endl;
cout << "相加:\n"<<m+c<<endl;
VectorXd v(3);
v << 1, 2, 3; //逗号初始化,英文:comma-initializer,Eigen未提供c++11 的{}初始化方式
cout << "矩阵*向量 =\n"<< d * v << endl;
参考
2、www.cnblogs.com/cc111/p/9354924.html
3、www.cnblogs.com/jerry323/p/9097264.html
4、blog.csdn.net/jiajiading/article/details/103369058

