本页讨论了几种用于初始化矩阵的高级方法。它提供了之前介绍的逗号初始化器的更多细节。它还解释了如何获得特殊矩阵,例如单位矩阵和零矩阵。

1 逗号初始化程序

Eigen提供逗号初始化语法,允许用户轻松设置矩阵,向量或数组的所有系数。只需列出系数,从左上角开始,从左到右,从上到下移动。需要事先指定对象的大小。如果列出的系数太少或太多,Eigen会抱怨。

而且,初始化列表的元素本身可以是向量或矩阵。常见的用途是将矢量或矩阵连接在一起。例如,以下是如何将两个行向量连接在一起。请记住,必须先设置大小才能使用逗号初始值设定项

我们可以使用相同的技术来初始化具有块结构的矩阵。

逗号初始值设定项也可用于填充块表达式,例如 m.row(i)。这是获得与上面第一个示例相同结果的更复杂方法:

2.特殊矩阵和数组

2.1 矩阵阵列类具有静态方法等Zero(),其可用于所有系数初始化到零。有三种变体。

第一个变量不带参数,只能用于固定大小的对象。如果要将动态大小对象初始化为零,则需要指定大小。

第二个变体需要一个参数,并且可以用于一维动态大小的对象

第三个变体需要两个参数,并且可以用于二维对象。以下示例说明了所有三种变体:

2.2 类似地,静态方法Constant(value)将所有系数设置为value

如果需要指定对象的大小,则附加参数将在value参数之前,如

MatrixXd::Constant(rows, cols, value). Random()方法用随机系数填充矩阵或数组。

行         列         值

可以通过调用Identity()获得单位矩阵;

此方法仅适用于Matrix,不适用于Array,因为“单位矩阵”是线性代数概念。

 LinSpaced(size, low, high仅适用于向量一维数组;

它产生一个指定大小的向量,其系数在low和high之间等间隔size。方法LinSpaced() 在下面的示例中进行了说明,该示例打印一个表格,其角度为度,相应的角度为弧度,以及它们的正弦和余弦。

此示例显示可以将LinSpaced()返回的对象分配给变量(和表达式)。Eigen定义了实用函数,如setZero(),MatrixBase :: setIdentity()和DenseBase :: setLinSpaced(),可以方便地执行此操作。以下示例对比了构造矩阵的三种方法

使用静态方法和赋值,         使用静态方法和逗号初始化程序,         或使用setXxx()方法

3. 用作临时对象

如上所示,静态方法如Zero()和Constant()可用于在声明时或在赋值运算符的右侧初始化变量。您可以将这些方法视为返回矩阵或数组; 实际上,它们返回所谓的表达式对象,在需要时可以计算矩阵或数组,因此这种语法不会产生任何开销。

这些表达式也可以用作临时对象。

Eigen官网教程 (4) 高级初始化相关推荐

  1. Eigen官网教程(1) Matrix相关

    1. Eigen库与头文件 Eigen库被分为了一个Core模块和几个其他额外的模块,每个模块都有对应的头文件,使用时需要进行包含.其中通过Dense和Eigen头文件可以很方便的使用其他的模块,因此 ...

  2. Eigen官网教程(2) Array类和元素级操作

    0 引言 Array类提供了和Matrix不同的操作,Matrix主要为了线性代数而设计,而Array类是通常用的数组.Array类提供了更方便的元素级的操作,但是没有线性代数方面的意义,比如给每个元 ...

  3. Eigen官网教程(7)geometry几何模块的实践

    Eigen的几何模块用来表达空间的旋转.平移等变换.3维空间中刚体的运动有六个自由度,分别是绕3个轴的旋转运动和沿着3个轴的平移运动.对于旋转可以用3x3的旋转矩阵R表示,旋转矩阵描述了刚体经过矩阵作 ...

  4. Eigen官网教程(6) Map类

    0 介绍 有时,您可能希望在Eigen中使用预定义的数字数组作为向量或矩阵.虽然一个选项是复制数据,但最常见的是您可能希望将此内存重新用作特征类型.幸运的是,使用Map类非常容易. 1 映射类型并声明 ...

  5. Eigen官网教程(5) 规约、范数等

    1 Reductions 2 范数计算 向量的平方范数由squaredNorm()获得,等价于向量对自身做点积,也等同于所有元素平方和.Eigen也提供了norm()范数,返回的是squaredNor ...

  6. Gem5模拟器,详解官网教程Event-driven programming(五)

    目录 一.解释一下gem5中的event-driven? 二.Creating a simple event callback (1)定义一个新的 C++ 类,并继承自 SimObject 抽象基类 ...

  7. java官网教程(基础篇)—— 基础的Java类 —— 基础 I / O

    目录 基本 Java 类 基础 I/O I/O流 字节流 字符流 缓冲流 扫描和格式化 扫描 格式化 从命令行中进行IO操作 数据流 对象流 文件 I/O(采用 NIO.2) 什么是路径? Path类 ...

  8. Angular官网教程示例知识点总结

    Angular官网教程示例知识点总结 1.背景 2.知识点 2.1 应用的外壳 2.1.1 使用 Angular CLI 创建初始的应用结构 2.1.2 启动应用服务器 2.1.3 双花括号表达式 2 ...

  9. [pytorch] 官网教程+注释

    pytorch官网教程+注释 Classifier import torch import torchvision import torchvision.transforms as transform ...

最新文章

  1. Linux命令篇之usermod命令和passwd命令
  2. Docker(基础理解)
  3. JavaScript比较数组的方法
  4. 五分钟了解一致性hash算法!
  5. nginx源码分析configure脚本详解
  6. 线性表(代码、分析、汇编)
  7. AM335x关于LCD屏幕的时钟PLL配置
  8. 四二拍用音符怎么表示_2020圣诞平安夜怎么发朋友圈?朋友圈关于平安夜经典语录精选...
  9. 多媒体课件利用计算机开发工具将,多媒体课件设计与制作教程PPT演示课件
  10. C11新特性(部分)
  11. cadvisor 常用容器监控指标
  12. [转载]推荐的Windows7精简版资源
  13. 码农翻身讲网络4:从Token到Sessions说到OAuth认证和CAS单点登录
  14. 从现在开始,格外珍惜时间,让生活充实起来
  15. CV7 颜色追踪和图像阈值
  16. 中国人数学能力很差?
  17. DCOS到底是啥?看完这篇你就懂了~
  18. 一定要学会的vsCode格式化整理代码的快捷键,再也不用手动调格式了
  19. [收藏]POSIX标准
  20. 2019access创建数据表、查询和窗体

热门文章

  1. vim插件管理器minpac安装及使用
  2. OpenAI高调站队Pytorch,怎样学Pyorch?
  3. Wamp修改httpd.conf中的DocumentRoot不生效解决办法
  4. Spark 【数据挖掘平台介绍】 - Spark 1.1.0(看范式粒度)
  5. python fun函数、求4x4整型数组的主对角线元素的和_python中多维数组中列major的numpy整形...
  6. 应用宝认领应用签名_腾讯应用宝认领应用步骤
  7. 什么是静态,静态有什么作用呢?
  8. mysql备份到带库_备份离线就必须上物理带库?
  9. 我的世界服务器怎么修复锁链甲,我的世界手机版锁链甲怎么做 怎么获得
  10. linux下 java 文本_Java中如何将输入的信息写入文本中