• The comma initializer

    • a simple example 
    • join and block initialize 
      • join two row vectors together
      • initialize metrics with block structure
      • fill block expression
  • Special metrics and arrays
    • Zero();

      • Array33f::Zero();
      • ArrayXf::Zero(3);
      • ArrayXXf::Zero(3,4);
    • Constant(rows,cols,value);
    • Identity();
    • LinSpaced
    • 3 ways to construct the matrix
  • Usage as temporary objects
 

 
  1. The comma initializer
    1. a simple example 

      m << 1, 2, 3,
      4, 5, 6,
      7, 8, 9;
      std::cout << m;
    2. join and block initialize 
      • join two row vectors together

        RowVectorXd vec1(3);
        vec1 << 1, 2, 3;
        std::cout << "vec1 = " << vec1 << std::endl;
        RowVectorXd vec2(4);
        vec2 << 1, 4, 9, 16;;
        std::cout << "vec2 = " << vec2 << std::endl;
        RowVectorXd joined(7);
        joined << vec1, vec2;
        std::cout << "joined = " << joined << std::endl;

        vec1 = 1 2 3
        vec2 =  1  4  9 16
        joined =  1  2  3  1  4  9 16
      • initialize metrics with block structure
        MatrixXf matA(2, 2);
        matA << 1, 2, 3, 4;
        MatrixXf matB(4, 4);
        matB << matA, matA/10, matA/10, matA;
        std::cout << matB << std::endl;

          1   2 0.1 0.2
          3   4 0.3 0.4
        0.1 0.2   1   2
        0.3 0.4   3   4
      • fill block expression
        m.row(0) << 1, 2, 3;
        m.block(1,0,2,2) << 4, 5, 7, 8;
        m.col(2).tail(2) << 6, 9;
        std::cout << m;

        1 2 3
        4 5 6
        7 8 9
  2. Special metrics and arrays
    1. Zero()

      • Array33f::Zero();
      • ArrayXf::Zero(3);
      • ArrayXXf::Zero(3,4);
        std::cout << "A fixed-size array:\n";
        Array33f a1 = Array33f::Zero();
        std::cout << a1 << "\n\n";
        std::cout << "A one-dimensional dynamic-size array:\n";
        ArrayXf a2 = ArrayXf::Zero(3);
        std::cout << a2 << "\n\n";
        std::cout << "A two-dimensional dynamic-size array:\n";
        ArrayXXf a3 = ArrayXXf::Zero(3, 4);
        std::cout << a3 << "\n";

        A fixed-size array:
        0 0 0
        0 0 0
        0 0 0

        A one-dimensional dynamic-size array:
        0
        0
        0

        A two-dimensional dynamic-size array:
        0 0 0 0
        0 0 0 0
        0 0 0 0

    2. Constant(rows,cols,value);
    3. Identity();
    4. LinSpaced
      ArrayXXf table(10, 4);
      table.col(0) = ArrayXf::LinSpaced(10, 0, 90);
      table.col(1) = M_PI / 180 * table.col(0);
      table.col(2) = table.col(1).sin();
      table.col(3) = table.col(1).cos();
      std::cout << " Degrees Radians Sine Cosine\n";
      std::cout << table << std::endl;

      Degrees   Radians      Sine    Cosine
              0         0         0         1
             10     0.175     0.174     0.985
             20     0.349     0.342      0.94
             30     0.524       0.5     0.866
             40     0.698     0.643     0.766
             50     0.873     0.766     0.643
             60      1.05     0.866       0.5
             70      1.22      0.94     0.342
             80       1.4     0.985     0.174
             90      1.57         1 -4.37e-08
    5. 3 ways to construct the matrix
      const int size = 6;
      MatrixXd mat1(size, size);
      mat1.topLeftCorner(size/2, size/2) = MatrixXd::Zero(size/2, size/2);
      mat1.topRightCorner(size/2, size/2) = MatrixXd::Identity(size/2, size/2);
      mat1.bottomLeftCorner(size/2, size/2) = MatrixXd::Identity(size/2, size/2);
      mat1.bottomRightCorner(size/2, size/2) = MatrixXd::Zero(size/2, size/2);
      std::cout << mat1 << std::endl << std::endl;
      MatrixXd mat2(size, size);
      mat2.topLeftCorner(size/2, size/2).setZero();
      mat2.topRightCorner(size/2, size/2).setIdentity();
      mat2.bottomLeftCorner(size/2, size/2).setIdentity();
      mat2.bottomRightCorner(size/2, size/2).setZero();
      std::cout << mat2 << std::endl << std::endl;
      MatrixXd mat3(size, size);
      mat3 << MatrixXd::Zero(size/2, size/2), MatrixXd::Identity(size/2, size/2),
      MatrixXd::Identity(size/2, size/2), MatrixXd::Zero(size/2, size/2);
      std::cout << mat3 << std::endl;

      0 0 0 1 0 0
      0 0 0 0 1 0
      0 0 0 0 0 1
      1 0 0 0 0 0
      0 1 0 0 0 0
      0 0 1 0 0 0 0 0 0 1 0 0
      0 0 0 0 1 0
      0 0 0 0 0 1
      1 0 0 0 0 0
      0 1 0 0 0 0
      0 0 1 0 0 0 0 0 0 1 0 0
      0 0 0 0 1 0
      0 0 0 0 0 1
      1 0 0 0 0 0
      0 1 0 0 0 0
      0 0 1 0 0 0

       

  3. Usage as temporary objects
    std::cout << mat << std::endl << std::endl;
    mat = (MatrixXf(2,2) << 0, 1, 1, 0).finished() * mat;
    std::cout << mat << std::endl;

     0.68  0.566  0.823
    -0.211  0.597 -0.605

    -0.211  0.597 -0.605
      0.68  0.566  0.823

The finished() method is necessary here to get the actual matrix object once the comma initialization of our temporary submatrix is done.

C++_Eigen函数库用法笔记——Advanced Initialization的更多相关文章

  1. C++_Eigen函数库用法笔记——The Array class and Coefficient-wise operations

    The advantages of Array Addition and subtraction Array multiplication abs() & sqrt() Converting ...

  2. C++_Eigen函数库用法笔记——Block Operations

    Using block operations rvalue, i.e. it was only read from lvalues, i.e. you can assign to a block Co ...

  3. C++_Eigen函数库用法笔记——Matrix and Vector Arithmetic

    Addition and subtraction Scalar multiplication and division Transposition Matrix-matrix and matrix-v ...

  4. PHP中正则替换函数preg_replace用法笔记

    今天应老板的需求,需要将不是我们的页面修改一个链接,用js+iframe应该也能实现,但是我想尝试一下php实现方法. 首先你得先把别人的页面download到你的php中,实现方法可以用curl, ...

  5. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  6. 转: ES6异步编程: co函数库的含义与用法

    转: ES6异步编程: co函数库的含义与用法 co 函数库是著名程序员 TJ Holowaychuk 于2013年6月发布的一个小工具,用于 Generator 函数的自动执行. 比如,有一个 Ge ...

  7. makefile笔记10 - makefile 函数库文件

    函数库文件也就是对 Object 文件(程序编译的中间文件)的打包文件.在 Unix 下,一般是由命令"ar"来完成打包工作. 一.函数库文件的成员 一个函数库文件由多个文件组成. ...

  8. OpenCV 学习笔记03 boundingRect、minAreaRect、minEnclosingCircle、boxPoints、int0、circle、rectangle函数的用法

    函数中的代码是部分代码,详细代码在最后 1 cv2.boundingRect 作用:矩形边框(boundingRect),用于计算图像一系列点的外部矩形边界. cv2.boundingRect(arr ...

  9. python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法

    python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法 在Python中字符串处理函数里有三个去空格(包括'\n', '\r', '\t', ' ')的函数 ...

随机推荐

  1. 关联规则算法(The Apriori algorithm)详解

    一.前言 在学习The Apriori algorithm算法时,参考了多篇博客和一篇论文,尽管这些都是很优秀的文章,但是并没有一篇文章详解了算法的整个流程,故整理多篇文章,并加入自己的一些注解,有了 ...

  2. Linux常用指令---快捷键

    Linux下快捷键使用 Ctrl + a 切换到命令行开始 这个操作跟Home实现的结果一样的,但Home在某些unix环境下无法使用,便可以使用这个组合:在Linux下的vim,这个也是有效的:另外 ...

  3. ubuntu14.04上安装Mysql-5.7.11

    先安装好操作系统   在Mysql官网上下载最新版的Ubuntu Linux专用的Mysql.我这里下载的是:mysql-server_5.7.11-1ubuntu14.04_amd64.deb-bu ...

  4. IOS开发之—— iOS 支付 [支付宝、银联、微信]

    支付宝iOSsdk官方下载sdk地址:https://b.alipay.com/order/productDetail.htm?productId=2013080604609654&tabId ...

  5. Maven(一)简介和基本安装使用

    简介 如今用于项目管理和自动化构建的东东用的比较多的,比如: eclipse中用到的ant 现今流行的android studio中用到的gradle 这里将介绍另一种工具——maven (也可以用来 ...

  6. 『片段』OracleHelper (支持 多条SQL语句)

    C# 调用 Oracle 是如此尴尬 >System.Data.OracleClient.dll —— .Net 自带的 已经 过时作废. >要链接 Oracle 服务器,必须在 本机安装 ...

  7. 微信小程序开发公测,小程序账号申请办法攻略

    11月3号晚上 10 点,微信公众平台发布公告,宣布微信小程序正式开放公测.此次小程序公测允许开发者将产品提交至微信公众平台审核,但是暂时不支持发布,也就是说普通消费者若想体验小程序,还需要等待一段时 ...

  8. redis学习笔记——(4)

    一.概述: 在该系列的前几篇博客中,主要讲述的是与Redis数据类型相关的命令,如String.List.Set.Hashes和Sorted-Set.这些命令都具有一个共同点,即所有的操作都是针对与K ...

  9. Javascript基础系列之(六)循环语句(do while循环)

    do/while 循环是 while 循环的变体.该循环会执行一次代码块,在检查条件是否为真之前,然后如果条件为真的话,就会重复这个循环. 语法结构如下 do { statement } while ...

  10. C# JArray与JObject 的使用 json [{}]

    C# JArray与JObject 的使用 STEP1.using Newtonsoft.Json.Linq; STEP2 如何获取json里的某个属性(节点)值,对其删改,新增 //2.1 数组用J ...