栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Eigen库学习笔记(3)——矩阵块操作、初始化

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Eigen库学习笔记(3)——矩阵块操作、初始化

一、矩阵块操作

即截取矩阵,基本操作为:
索引同python,从0开始

Block: size of (p, q), start at (i,j)
matrix.block(i,j,p,q)  //动态大小
matrix.block(p,q)  //固定大小

array同样适用该截取方法。
固定块截取速度更快。

对比一下numpy的截取和Eigen的截取

# python版
a = np.linspace(1,16,16)
a.reshape(4,4)
b = a[1:4, 1:4]
//c++版
MatrixXf m(4,4);
MatrixXf n(3,3);
m << 1,2,3,4,5,6,7,8,
     9,10,11,12,13,14,15,16;
n = m.block(1,1,3,3); //矩阵截取

MatrixXf k(2,2);
k << 0,0,0,0;
n.block(0,0,2,2) = k;  //矩阵块赋值

//更为便捷的某行某列截取
m.row(1);   //截取第2行
m.col(1);   //截取第2列 
二、向量块操作

基本格式

//用Array和Matrix生成的向量都可以用
//顺序n个元素
vector.head(n);
//倒序n个元素
vector.tail(n);
//第i个位置起截取n个元素
vector.segment(i,n);
#include 
#include 
 
using namespace std;
using namespace Eigen;
int main()
{
  ArrayXf v(6);
  v << 1, 2, 3, 4, 5, 6;
  cout << "v.head(3) =" << endl << v.head(3) << endl << endl;
  cout << "v.tail<3>() = " << endl << v.tail<3>() << endl << endl;
  v.segment(1,4) *= 2;
  cout << "after 'v.segment(1,4) *= 2', v =" << endl << v << endl;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/445550.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号