Eigen(6)快操作

1. 块操作

    块是matrixarray中的矩形子部分。

2. 使用块

    函数.block(),有两种形式

operation

构建一个动态尺寸的block

构建一个固定尺寸的block

起点(i,j)块大小(p,q)

.block(i,j,p,q)

.block< p,q >(i,j)

    Eigen中,索引从0开始。

    两个版本都可以用于固定尺寸和动态尺寸的matrix/array。功能是等价的,只是固定尺寸的版本在block较小时速度更快一些。

int main(){Eigen::MatrixXf m(4,4);m <<  1, 2, 3, 4,5, 6, 7, 8,9,10,11,12,13,14,15,16;cout << "Block in the middle" << endl;cout << m.block<2,2>(1,1) << endl << endl;for (int i = 1; i <= 3; ++i){cout << "Block of size " << i << "x" << i << endl;cout << m.block(0,0,i,i) << endl << endl;}}

输出

Block in the middle

 6  7

10 11

 

Block of size 1x1

1

 

Block of size 2x2

1 2

5 6

 

Block of size 3x3

 1  2  3

 5  6  7

 9 10 11

作为左值

int main(){Array22f m;m << 1,2,3,4;Array44f a = Array44f::Constant(0.6);cout << "Here is the array a:" << endl << a << endl << endl;a.block<2,2>(1,1) = m;cout << "Here is now a with m copied into its central 2x2 block:" << endl << a << endl << endl;a.block(0,0,2,3) = a.block(2,1,2,3);cout << "Here is now a with bottom-right 2x3 block copied into top-left 2x2 block:" << endl << a << endl << endl;}

输出

Here is the array a:

0.6 0.6 0.6 0.6

0.6 0.6 0.6 0.6

0.6 0.6 0.6 0.6

0.6 0.6 0.6 0.6

 

Here is now a with m copied into its central 2x2 block:

0.6 0.6 0.6 0.6

0.6   1   2 0.6

0.6   3   4 0.6

0.6 0.6 0.6 0.6

 

Here is now a with bottom-right 2x3 block copied into top-left 2x2 block:

  3   4 0.6 0.6

0.6 0.6 0.6 0.6

0.6   3   4 0.6

0.6 0.6 0.6 0.6

3. 行和列

Operation

Method

ith row

matrix.row(i)

jth colum

matrix.col(j)

int main(){Eigen::MatrixXf m(3,3);m << 1,2,3,4,5,6,7,8,9;cout << "Here is the matrix m:" << endl << m << endl;cout << "2nd Row: " << m.row(1) << endl;m.col(2) += 3 * m.col(0);cout << "After adding 3 times the first column into the third column, the matrix m is:\n";cout << m << endl;}

输出

Here is the matrix m:

1 2 3

4 5 6

7 8 9

2nd Row: 4 5 6

After adding 3 times the first column into the third column, the matrix m is:

 1  2  6

 4  5 18

 7  8 30

4. 角相关操作

operation

dynamic-size block

fixed-size block

左上角p\*q

matrix.topLeftCorner(p,q);

matrix.topLeftCorner< p,q >();

左下角p\*q

matrix.bottomLeftCorner(p,q);

matrix.bottomLeftCorner< p,q >();

右上角p\*q

matrix.topRightCorner(p,q);

matrix.topRightCorner< p,q >();

右下角p\*q

matrix.bottomRightCorner(p,q);

matrix.bottomRightCorner< p,q >();

q

matrix.topRows(q);

matrix.topRows< q >();

q

matrix.bottomRows(q);

matrix.bottomRows< q >();

p

matrix.leftCols(p);

matrix.leftCols< p >();

p

matrix.rightCols(p);

matrix.rightCols< p >();

int main(){Eigen::Matrix4f m;m << 1, 2, 3, 4,5, 6, 7, 8,9, 10,11,12,13,14,15,16;cout << "m.leftCols(2) =" << endl << m.leftCols(2) << endl << endl;cout << "m.bottomRows<2>() =" << endl << m.bottomRows<2>() << endl << endl;m.topLeftCorner(1,3) = m.bottomRightCorner(3,1).transpose();cout << "After assignment, m = " << endl << m << endl;}

输出

m.leftCols(2) =

 1  2

 5  6

 9 10

13 14

 

m.bottomRows<2>() =

 9 10 11 12

13 14 15 16

 

After assignment, m =

 8 12 16  4

 5  6  7  8

 9 10 11 12

13 14 15 16

5. vectors的块操作

operation

dynamic-size block

fixed-size block

n

vector.head(n);

vector.head< n >();

n

vector.tail(n);

vector.tail< n >();

i起始的n个元素

vector.segment(i,n);

vector.segment< n >(i);

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11.【原创】chrom文件上传后,手动释放内存

最近在用google chrom测试大文件上传功能&#xff0c;上传的文件为4GB左右的。但是试了几次之后突然发现&#xff0c;我C盘的内存由原先的剩余的30多GB变为了15GB左右&#xff0c;猜想是chrom文件上传之后并没有把读取出的文件进行清理。网上找了很久也没有找到类似解决方法。于…

mapreduce排序算法_MapReduce算法–二级排序

mapreduce排序算法我们将继续执行有关实现MapReduce算法的系列文章&#xff0c;该系列可在使用MapReduce进行数据密集型文本处理中找到。 本系列的其他文章&#xff1a; 使用MapReduce进行数据密集型文本处理 使用MapReduce进行数据密集型文本处理-本地聚合第二部分 使用Had…

数据图表与分析图_几种可视化数据分析图表的使用

图表简洁大方、一目了然&#xff0c;利用图表工具就能轻松实现&#xff0c;是数据分析中常采用的方式。今天利用在雀书无代码平台搭建的图表来介绍几种常见数据分析图表的使用。1. 柱状图柱状图可以显示一段时间内的数据变化或显示各项之间的比较情况&#xff0c;主要使用颜色进…

java打包exe

配置如下&#xff1a; 1&#xff0c;复制运行环境jre&#xff1b; 2&#xff0c;复制项目配置文件config; 3&#xff0c;复制项目运行的lib包&#xff1b; 4&#xff0c;编写清单文件&#xff0c;放到系统目录&#xff1b; 5&#xff0c;将项目打包成xxx.jar&#xff0c;放入到…

Eigen(5)Array类和元素级操作

0. 为什么使用Array 相对于Matrix提供的线性代数运算&#xff0c;Array类提供了更为一般的数组功能。Array类为元素级的操作提供了有效途径&#xff0c;比如点加&#xff08;每个元素加值&#xff09;或两个数据相应元素的点乘。 1. Array Array是个类模板&#xff08;类似于M…

装饰信封

有时 很多时候&#xff0c;我需要一个类实现通过使其他类的实例的接口。 听起来很奇怪&#xff1f; 让我给你看一个例子。 在Takes框架中有很多此类&#xff0c;它们的名称都都类似于*Wrap 。 这是一个方便的设计概念&#xff0c;不幸的是&#xff0c;在Java中看起来相当冗长。…

进制转换c语言代码_奇怪的C语言代码,有些函数在变量前加上(void)是什么类型转换?...

C语言的语法极其简洁&#xff0c;即使是初次接触编程语言的初学者也能很快学完它的语法。不过&#xff0c;C语言也是一门“灵活得过了头”的编程语言&#xff0c;对于很多初学者来说&#xff0c;编写C语言程序就好像拿着一堆最基本的砖块&#xff0c;要修建一座大厦一样&#x…

Eigen(4)矩阵基本运算

矩阵和向量的运算 提供一些概述和细节&#xff1a;关于矩阵、向量以及标量的运算。 1. 介绍 Eigen提供了matrix/vector的运算操作&#xff0c;既包括重载了c的算术运算符/-/*&#xff0c;也引入了一些特殊的运算比如点乘dot、叉乘cross等。 对于Matrix类&#xff08;matrix和v…

beta冲刺(1/7)

作业格式 课程名称&#xff1a;软件工程1916|W&#xff08;福州大学&#xff09;作业要求&#xff1a;项目beta冲刺&#xff08;团队&#xff09;团队名称&#xff1a; 那周余嘉熊掌将得队作业目标&#xff1a;beta&#xff08;1/7&#xff09;队员学号队员姓名博客地址备注221…

qq纵横四海源码_【0基础】纵横中文网python爬虫实战

原文在此~【0基础】纵横中文网python爬虫实战​mp.weixin.qq.com大家好&#xff0c;我是你们的机房老哥&#xff01;在粉丝群的日常交流中&#xff0c;爬虫是比较常见的话题。python最强大的功能之一也是爬虫。考虑到很多0基础的小白想要入门爬虫。老哥今天就通过一个比较简单的…

Eigen(3)矩阵Matrix及其简单操作

1. Matrix类 在Eigen&#xff0c;所有的矩阵和向量都是Matrix模板类的对象&#xff0c;Vector只是一种特殊的矩阵&#xff08;一行或者一列&#xff09;。 Matrix有6个模板参数&#xff0c;主要使用前三个参数&#xff0c;剩下的有默认值。 Matrix<typename Scalar, int Ro…

java jquery_jQuery数据表和Java集成

java jqueryjQuery DataTables是一个开放源代码插件&#xff0c;用于在浏览器中创建表。 它具有许多功能&#xff0c;例如排序&#xff0c;服务器端处理&#xff0c; JQUERY UI主题滚动。 该插件的下载链接&#xff1a; http://www.datatables.net/download/ 在本演示中&am…

Eigen(2) 模块与头文件

Eigen库被分为一个Core模块和其他一些模块&#xff0c;每个模块有一些相应的头文件。 为了便于引用&#xff0c;Dense模块整合了一系列模块&#xff1b;Eigen模块整合了所有模块。一般情况下&#xff0c;include<Eigen/Dense> 就够了

白鹭龙骨异步加载

private armatureDisplay: dragonBones.EgretArmatureDisplay; /** * 加载龙骨动画 * Create scene interface */ private loadGragon(): void { let t this; t.removeGragon(); //默认男战士 let sex t.occupationSex.selectedValue ? t.occupationSex.selectedValue : 1; …

zip和unzip上的Java要点

压缩是编写文件时可以在我们的代码中发出的主要动作之一。 因此&#xff0c;我发现在zip和unzip上必不可少的简单Java代码段&#xff0c;并且必须易于访问。 要点是纯Java语言&#xff0c;并以zip格式存储两个文件。 完成后&#xff0c;打开打开的拉链并评估其内容。 import …

ppt图片丢失_041 职场PPT实战:做好的PPT换个电脑就丢字体?三招解决!

大家好&#xff0c;我是肥宅。这是《职场PPT实战》系列更文的第41篇。本期我要跟大家聊一个很实在的问题&#xff0c;字体嵌入。有小伙伴在后台提问&#xff0c;他是这么说的&#xff1a;“肥宅老师&#xff0c;我做好的PPT&#xff0c;换个电脑打开字体就变了&#xff0c;有没…

matlab sort对矩阵某一维进行排序并记录之前索引

sort函数默认升序排列&#xff0c;即‘ascend’&#xff1b; [B, index] sort(A&#xff0c;dim&#xff0c; model) B为排序后矩阵 index记录排序前的索引号 A需要进行排序操作的矩阵 dim对矩阵的维度&#xff08;一维不用指定&#xff0c;二维默认对列&#xff09; mode…

2018-2019-2 20165221 【网络对抗技术】-- Exp9 Web安全基础

2018-2019-2 20165221 【网络对抗技术】-- Exp9 Web安全基础 目录&#xff1a; 一 . 实验要求二 . 实验过程记录 1 . Webgoat安装2 . SQL注入的攻击 命令注入&#xff08;Command Injection&#xff09;数字型注入&#xff08;Numeric SQL Injection&#xff09;日志欺骗&#…

python不同目录调用_python3 不同目录间模块调用

#Author by Andy#_*_ coding:utf-8 _*_#__file__获取当前程序的相对路径import os,sys#print(__file__)# os.path.abspath(__file__) 获取当前程序的绝对路径print(os.path.abspath(__file__))# E:\my python study\day4\Atm\bin\atm.pyPathos.path.abspath(__file__)# print(o…

python 安装虚拟环境virtualenv

1.sudo apt install virtualenv 安装失败 2.sudo apt-get update 更新失败 提示&#xff1a; E: 仓库 “http://mirrors.aliyun.com/ubuntu artful Release” 不再含有 Release 文件。N: 无法安全地用该源进行更新&#xff0c;所以默认禁用该源。N: 参见 apt-secure(8) 手册以了…