Eigen笔记1:矩阵和向量的定义和赋值

1. 头文件声明

#include<eigen3/Eigen/Core>
#include<eigen3/Eigen/Dense>
#include<iostream>

using Eigen::MatrxXd;
using Eigen::VectorXd;

2. 向量

2.1 列向量定义

Eigen::Vector2d c1;//2*1列向量, 数据类型d是double
Eigen::Vector3d c2;//3*1列向量, 数据类型d是double
Eigen::Vector4d c3;//4*1列向量, 数据类型d是double
Eigen::VectorXd c4(30);//X*1动态列向量, 括号内数值可以自己定义,这里是30,表示30*1列向量,  数据类型d是double

Eigen::Vector2f c5;//2*1列向量, 数据类型f是float
Eigen::Vector3f c6;//3*1列向量, 数据类型f是float
Eigen::Vector4f c7;//4*1列向量, 数据类型f是float
Eigen::VectorXf c8(20);//X*1动态列向量, 括号内数值可以自己定义,这里是20,表示20*1列向量,  数据类型f是float

Eigen::Vector2i c9;//2*1列向量, 数据类型i是int
Eigen::Vector3i c10;//3*1列向量, 数据类型i是int
Eigen::Vector4i c11;//4*1列向量, 数据类型i是int
Eigen::VectorXi c12(20);//X*1动态列向量, 括号内数值可以自己定义,这里是20,表示20*1列向量, 数据类型i是int

列向量也可以用矩阵来表示

Eigen::Matrix<int,5,1> c13;//5*1列向量,第一个参数是数据类型int,第二个参数是行数,第三个参数是列数

2.2 行向量定义

Eigen::RowVector2d r1;//1*2行向量, 数据类型d是double
Eigen::RowVector3d r2;//1*3行向量, 数据类型d是double
Eigen::RowVector4d r3;//1*4行向量, 数据类型d是double
Eigen::RowVectorXd r4(30);//1*X动态行向量, 括号内数值可以自己定义,这里是30,表示30*1行向量,  数据类型d是double

Eigen::RowVector2f r5;//1*2行向量, 数据类型f是float
Eigen::RowVector3f r6;//1*3行向量, 数据类型f是float
Eigen::RowVector4f r7;//1*4行向量, 数据类型f是float
Eigen::RowVectorXf r8(20);//1*X动态行向量, 括号内数值可以自己定义,这里是20,表示20*1行向量,  数据类型f是float

Eigen::RowVector2i r9;//1*2行向量, 数据类型i是int
Eigen::RowVector3i r10;//1*3行向量, 数据类型i是int
Eigen::RowVector4i r11;//1*4行向量, 数据类型i是int
Eigen::RowVectorXi r12(20);//1*X动态行向量, 括号内数值可以自己定义,这里是20,表示20*1行向量, 数据类型i是int

行向量也可以用矩阵来表示

Eigen::Matrix<int,1,5> r13;//1*5行向量,第一个参数是数据类型int,第二个参数是行数,第三个参数是列数

2.3 向量赋值方法

2.3.1 列向量赋值方法

Eigen::Vector2f c14(5.0,2.0);//2*1列向量

2.3.2 行向量举例

Eigen::RowVector2f r14(5.0,2.0);//1*2行向量

2.3.3 其他赋值方法

  • 逐个元素赋值

注意索引是从0开始,和数组是一样的!

 Eigen::VectorXd c(2);
  c(0) = 4;
  c(1) = c(0) - 1;
  • 用矩阵赋值
Eigen::Matrix<int,1,5> r15;
v13 << 1, 2, 3, 4, 5;

3. 矩阵

3.1 矩阵定义

Eigen::Matrix2d m1;//2*2矩阵, 数据类型d是double
Eigen::Matrix3d m2;//3*3矩阵, 数据类型d是double
Eigen::Matrix4d m3;//4*4矩阵, 数据类型d是double
Eigen::MatrixXd m4(15,10);//动态矩阵, 括号内第一个参数是行,第二个参数是列,这里是15和10,表示15*10矩阵, 数据类型d是double

Eigen::Matrix2f m5;//2*2列向量, 数据类型f是float
Eigen::Matrix3f m6;//3*3列向量, 数据类型f是float
Eigen::Matrix4f m7;//4*4列向量, 数据类型f是float
Eigen::MatrixXf m8(10,15);//动态矩阵, 括号内第一个参数是行,第二个参数是列,这里是10和15,表示10*15矩阵, 数据类型f是float

Eigen::Matrix2i m9;//2*2列向量, 数据类型i是int
Eigen::Matrix3i m10;//3*3列向量, 数据类型i是int
Eigen::Matrix4i m11;//4*4列向量, 数据类型i是int
Eigen::MatrixXi m12(10,15);//动态矩阵, 括号内第一个参数是行,第二个参数是列,这里是10和15,表示10*15矩阵, 数据类型i是int

3.2 矩阵赋值方法

3.2.1 每个矩阵元素单独赋值

注意索引是从0开始,和数组是一样的!

Eigen::MatrixXd m(2,2);
m(0,0) = 3;
m(1,0) = 2.5;
m(0,1) = -1;
m(1,1) = m(1,0) + m(0,1);

3.2.3 逗号赋值

Eigen::Matrix3f m;
m << 1, 2, 3,
     4, 5, 6,
     7, 8, 9;
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值