Eigen教程2 - 入门

博客新址: http://blog.xuezhisd.top
邮箱:xuezhisd@126.com


安装Eigen

  • 无需安装。
  • 只需将Eigen位置添加到include路径中。

Demo 1

  • MatrixXd,X表示动态大小,d表示双精度。
  • Eigen/Dense定义了MatrixXd类型的所有成员函数等。该头文件定义的类和函数都位于Eigen名字空间中。
// 参考链接:http://eigen.tuxfamily.org/dox/GettingStarted.html

#include <iostream>
#include <Eigen/Dense>
using Eigen::MatrixXd;
int main()
{
	MatrixXd m(2,2); //声明2x2的动态的双精度矩阵
	m(0,0) = 3; //访问元素
	m(1,0) = 2.5;
	m(0,1) = -1;
	m(1,1) = m(1,0) + m(0,1);
	std::cout << m << std::endl;
}
  • 结果如下所示:

[外链图片转存失败(img-aGGJFYG1-1569400235090)(http://img.zhangxuezhi.com/to9xxlv3w4z8swwbrpwcdqeqox.png)]

编译

g++ -I /path/to/eigen/ my_program.cpp -o my_program 
  • 将Eigen文件夹放到/usr/local/include/目录下,可以使用下面的命令编译:
g++ my_program.cpp -o my_program

Demo2

  • 矩阵和向量的运算
// 参考链接:http://eigen.tuxfamily.org/dox/GettingStarted.html

#include <iostream>
#include <Eigen/Dense>
using namespace Eigen;
using namespace std;
int main()
{
	MatrixXd m = MatrixXd::Random(3,3); //声明和初始化3x3的矩阵,并随机初始化
	m = (m + MatrixXd::Constant(3,3,1.2)) * 50; // 矩阵加法,矩阵和标量积
	cout << "m =" << endl << m << endl;
	VectorXd v(3); //声明3x1的向量,默认列向量
	v << 1, 2, 3; //初始化
	cout << "m * v =" << endl << m * v << endl; //输出矩阵和向量的积
}
// 参考链接:http://eigen.tuxfamily.org/dox/GettingStarted.html

#include <iostream>
#include <Eigen/Dense>
using namespace Eigen;
using namespace std;
int main()
{
	Matrix3d m = Matrix3d::Random();
	m = (m + Matrix3d::Constant(1.2)) * 50;
	cout << "m =" << endl << m << endl;
	Vector3d v(1,2,3); 

	cout << "m * v =" << endl << m * v << endl;
}
  • 小结:
    • 上面的两段程序功能相同。
    • 第一段程序使用动态大小矩阵,矩阵大小是在运行时确定的。
    • 第二段程序使用固定大小矩阵,矩阵大小是在编译时确定的。
  • 随机函数的取值范围是[-1, 1]。
  • 固定大小的矩阵的2个优点:
    • 编译器能生成更快的代码;
    • 支持更加严格的检查。
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值