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

  • Addition and subtraction
  • Scalar multiplication and division
  • Transposition
  • Matrix-matrix and matrix-vector multiplication
  • Trace(求迹的和)

 


  • Addition and subtraction

    • binary operator + as in a+b
    • binary operator - as in a-b
    • unary operator - as in -a
    • compound operator += as in a+=b
    • compound operator -= as in a-=b

      #include <iostream>

      #include <Eigen/Dense>

      using namespace Eigen;

      int main()

      {

      Matrix2d a;

      a << 1, 2,

      3, 4;

      MatrixXd b(2,2);

      b << 2, 3,

      1, 4;

      std::cout << "a + b =\n" << a + b << std::endl;

      std::cout << "a - b =\n" << a - b << std::endl;

      std::cout << "Doing a += b;" << std::endl;

      a += b;

      std::cout << "Now a =\n" << a << std::endl;

      Vector3d v(1,2,3);

      Vector3d w(1,0,0);

      std::cout << "-v + w - v =\n" << -v + w - v << std::endl;

      }

      a + b =
      3 5
      4 8
      a - b =
      -1 -1
       2  0
      Doing a += b;
      Now a =
      3 5
      4 8
      -v + w - v =
      -1
      -4
      -6

  • Scalar multiplication and division
    • binary operator * as in matrix*scalar
    • binary operator * as in scalar*matrix
    • binary operator / as in matrix/scalar
    • compound operator *= as in matrix*=scalar
    • compound operator /= as in matrix/=scalar

      #include <iostream>

      #include <Eigen/Dense>

      using namespace Eigen;

      int main()

      {

      Matrix2d a;

      a << 1, 2,

      3, 4;

      Vector3d v(1,2,3);

      std::cout << "a * 2.5 =\n" << a * 2.5 << std::endl;

      std::cout << "0.1 * v =\n" << 0.1 * v << std::endl;

      std::cout << "Doing v *= 2;" << std::endl;

      v *= 2;

      std::cout << "Now v =\n" << v << std::endl;

      }

      a * 2.5 =
      2.5   5
      7.5  10
      0.1 * v =
      0.1
      0.2
      0.3
      Doing v *= 2;
      Now v =
      2
      4
      6

  • Transposition

    MatrixXcf a = MatrixXcf::Random(2,2);

    cout << "Here is the matrix a\n" << a << endl;

    cout << "Here is the matrix a^T\n" << a.transpose() << endl;

    Here is the matrix a
     (-0.211,0.68) (-0.605,0.823)
     (0.597,0.566)  (0.536,-0.33)
    Here is the matrix a^T
     (-0.211,0.68)  (0.597,0.566)
    (-0.605,0.823)  (0.536,-0.33)

 the instruction a = a.transpose() does not replace a with its transpose

For in-place transposition,simply use the transposeInPlace()                

MatrixXf a(2,3); a << 1, 2, 3, 4, 5, 6;

cout << "Here is the initial matrix a:\n" << a << endl;

a.transposeInPlace();

cout << "and after being transposed:\n" << a << endl;

  • Matrix-matrix and matrix-vector multiplication

    • binary operator * as in a*b
    • compound operator *= as in a*=b (this multiplies on the right: a*=b is equivalent to a = a*b

      #include <iostream>

      #include <Eigen/Dense>

      using namespace Eigen;

      int main()

      {

      Matrix2d mat;

      mat << 1, 2,

      3, 4;

      Vector2d u(-1,1), v(2,0);

      std::cout << "Here is mat*mat:\n" << mat*mat << std::endl;

      std::cout << "Here is mat*u:\n" << mat*u << std::endl;

      std::cout << "Here is u^T*mat:\n" << u.transpose()*mat << std::endl;

      std::cout << "Here is u^T*v:\n" << u.transpose()*v << std::endl;

      std::cout << "Here is u*v^T:\n" << u*v.transpose() << std::endl;

      std::cout << "Let‘s multiply mat by itself" << std::endl;

      mat = mat*mat;

      std::cout << "Now mat is mat:\n" << mat << std::endl;

      }

      Here is mat*mat:
       7 10
      15 22
      Here is mat*u:
      1
      1
      Here is u^T*mat:
      2 2
      Here is u^T*v:
      -2
      Here is u*v^T:
      -2 -0
       2  0
      Let‘s multiply mat by itself
      Now mat is mat:
       7 10
      15 22

  • Trace(求迹的和)

    #include <iostream>

    #include <Eigen/Dense>

    using namespace std;

    int main()

    {

    Eigen::Matrix2d mat;

    mat << 1, 2,

    3, 4;

    cout << "Here is mat.trace(): " << mat.trace() << endl;

    }

    Here is mat.trace():     5

时间: 2024-10-24 23:58:47

C++_Eigen函数库用法笔记——Matrix and Vector Arithmetic的相关文章

C++_Eigen函数库用法笔记——Advanced Initialization

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);

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

今天应老板的需求,需要将不是我们的页面修改一个链接,用js+iframe应该也能实现,但是我想尝试一下php实现方法. 首先你得先把别人的页面download到你的php中,实现方法可以用curl, file,这里有一篇文章写的不错http://www.11jn.com/phpbb/viewtopic.php?f=31&t=1390,这里就不多说. 然后就是用正则表达式找到你的链接,因为是具体的链接,就直接写了,比如百度 (http\:\/\/www.baidu.com) 下面就是主要函数 pr

C++学习笔记之字符函数库cctype

C++从C语言继承了一个与字符相关的.非常方便的函数软件包,它可以简化诸如确定字符是否为大写字母.数字.标点符号等工作,这些函数原型是在头文件cctype(老式风格ctype.h)中定义的. 下表对这些函数进行了总结,有些系统可能没有表中列出的函数,也有可能还有在表中没有列出的一些函数. 函数名称 返回值 isalnum() 如果参数是字母数字,即字母或者数字,该函数返回true isalpha() 如果参数是字母,该函数返回true iscntrl() 如果参数是控制字符,该函数返回true

标准C函数库的用法

本篇介绍若干常用的标准C函数的用法,主要介绍stdio(标准输入输出).math(数字函数库).time(时间函数库).stdlib(标准函数库)string(标准字符串函数)等. 最后更新 2015-03-17 权利声明:作者拥有本书的全部权利.作者授权任何人都可以自由转载本网站发布的内容,但转载时必须遵守以下限制: ①转载时必须全文转载,不得有任何修改,必须包含"权利声明"和"官网地址" ② 仅限于网络转载,即最终结果公布于网络上.凡是不遵守以上两条的转载行为视

重温JSP学习笔记--El函数库

EL函数库(由JSTL提供的) * 导入标签库:<%@ tablib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> String toUpperCase(String input):把参数转换成大写 String toLowerCase(String input):把参数转换成小写 int indexOf(String input, String substring):从大串,输出小

thinkPHP函数库笔记(common.php_3.1.2版本)

0.加载文件:file_exists_case,require_cache,require_array,import,load,vendor,alias_import *1.file_exists_case:判断文件是否存在(区分大小写).该函数针对windows系统,因为在windows系统下文件/文件夹不区分大小写,所以php读取时使用的字串是大小写将 没有问题:但是在linux系统下是区分大小写的,如果读取时字串不同则不能读取文件.所以在windows系统下使用则需要特别注意文件名的大小写

PHP笔记4__函数/全局、静态变量/函数参数/加载函数库/,,

<?php header("Content-type: text/html; charset=utf-8"); echo table(5,5); function table($rows,$cols){ //函数 $str = ''; $str .= '<table border="1" width="800" align="center">'; $str .= '<caption><h1&

第一阶段 PHP基础.数学、字符函数库与循环

一位初学php的随堂笔记,记录自己的成长! 一.数学函数库 1.安装:数学函数库是PHPCORE的组成部分 2. (1) floor: 向下取整 (2) ceil: 向上取整 (3)round: 四舍五入 int round(number $var[,int $percision]) (4)pow :求次幂 (5)sqrt:求开平方 (6)max :求最大值 (7)min :求最小值 (8)rand :求整数随机数 (9)mt_rand:求整数更好随机数 二.流程控制语句--循环 1.什么时候用

numpy函数库中一些常用函数的记录

numpy函数库中一些常用函数的记录 最近才开始接触python,python中为我们提供了大量的库,不太熟悉,因此在<机器学习实战>的学习中,对遇到的一些函数的用法进行记录. (1)mat( ) numpy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都可以用于处理行列表示的数字元素.虽然他们看起来很相似,但是在这两个数据类型上执行相同的数学运算可以得到不同的结果,其中numpy函数库中matrix与MATLAB中matrices等价. 调用mat( )函数可以将数组转