Eigen最经典的操作

1、声明与赋值

1.1、声明
1.1.1、在编译期不确定矩阵(向量)大小,如下
	 MatrixXd mat;
	 Matrix<double, Dynamic, Dynamic> mat;
	 //typedef Matrix<double, Dynamic, Dynamic> MatrixXd;
	 VectorXd v;
1.1.2、在编译期确定矩阵(向量)大小
	 MatrixXd mat(2,4);
	 Matrix<double, 2, 4> mat;
	 VectorXd v(4);
1.2.赋值
1.2.1、输入运算符赋值
 	mat << 1, 2, 
 	        3, 4, 
 	        8, 5, 
 	        6, 9;
	 v << 1, 2, 3, 4;
1.2.2、小括号赋值
    mat(0, 0) = 1;
    mat(0, 1) = 1;
    v(0) = 0;
注:只有在编译期确定大小后,才可对矩阵直接进行赋值;如果声明变量没有确定大小那必须在resize给定大小后才可赋值

2、规约操作

2.1、基本规约
矩阵和向量都常用的操作有:求和、求平均、求最大最小值,求最大最小索引下标,向量还有平方范数和范数
 	MatrixXd mat(2,2);
    mat << 1, 2, 3, 4;
    std::cout << mat.mean() << std::endl;
    std::cout << mat.sum() << std::endl;
    std::cout << mat.minCoeff() << std::endl;
    std::cout << mat.maxCoeff() << std::endl;
    int max = mat.maxCoeff(&maxrow, &maxcol);
    int min = mat.minCoeff(&minrow, &mincol);
    VectorXd v(2);
    v << 2, 2;
    std::cout << v.mean() << std::endl;
    std::cout << v.sum() << std::endl;
    std::cout << v.minCoeff() << std::endl;
    std::cout << v.maxCoeff() << std::endl;
    std::cout << v.norm() << std::endl;
    std::cout << v.norm() << std::endl;
2.2、列/行规约
以列为单位进行操作
MatrixXd mat(2,2);
mat << 1, 2, 3, 4;
std::cout << mat.colwise().sum() << std::endl;
以行为单位进行操作
	MatrixXd mat(2,2);
	mat << 1, 2, 3, 4;
	std::cout << mat.rowwise().sum() << std::endl;
	
	MatrixXd mat(2,2);
    mat << 1, 2, 3, 4;
    VectorXd v(2);
    v << 2, 2;
    mat.colwise() += v;
    std::cout << mat<< std::endl;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值