第七章:矩阵

第一节:矩阵的数学定义

1.矩阵的定义

  在线性代数中,矩阵就是以行和列形式组成的矩形数字块(向量是标量的数组,矩阵是向量的数组)。

2.矩阵的记法

  矩阵我们通常使用大中括号来表示,也可以使用竖线的方式来表示,通常用大写字母来表示矩阵。当使用矩阵的分量时,我们用下标法来表示矩阵的分量,注意的是矩阵的分量是从1开始,而不是0。

  

3.方阵

  行数和列数相同的矩阵称为方阵。方阵的概念非常重要,通常在3D中使用的矩阵就是2x2,3x3,4x4方阵。

  方阵的对角线元素就是方阵中分量行号和列号相同的元素,例如3x3矩阵中的m11,m22,m33这三个分量就是对角线元素,其他的元素则是非对角线元素

  

4.对角矩阵

  在方阵中,如果非对角元素都为0,则该方阵称为对角矩阵。例如

  

5.单位矩阵

  在对角矩阵中,如果对角线元素都为1,则该对角矩阵为单位矩阵。单位矩阵是一种特殊的对角矩阵,单位矩阵乘以任意矩阵得到都是原来的矩阵。例如,3D单位矩阵如下

  

6.向量的矩阵含义

  向量也可以看做为矩阵,行向量可以看做是1xn矩阵,列向量可以看做nx1矩阵。

7.矩阵的转置

  所谓的矩阵的转置就是将矩阵的行元素变为矩阵的列元素,将矩阵的列元素变为矩阵的行元素,矩阵M的转置记做MT

  

  行向量的矩阵转置为列向量,列向量的矩阵转置为行向量。

  对于任意对角矩阵D,都有DT=D,同样对于单位矩阵I,都有IT = I。

  对于任意矩阵D,都有(DT=D,即矩阵转置两次等于其本身。

8.标量和矩阵的乘法

  标量k和矩阵M相乘会得到一个和原矩阵维数相同的矩阵N,矩阵N的每个元素等于矩阵M的每个元素与标量k相乘,公式如下。

  

9.矩阵与矩阵的乘法

  矩阵的乘法定义为一个r x n矩阵A与一个n x c矩阵B相乘,则得到一个r x c矩阵AB。

  例如一个4 x 2矩阵A与一个2 x 5矩阵B相乘,得到的是一个4x5矩阵AB。

  

  对于新得到的矩阵AB记做C,则矩阵C的每个元素Cij等于矩阵A第i行向量与矩阵B第j列向量的点乘结果。示例如下

  

  矩阵C的元素c24就等于矩阵A的第二行向量与矩阵B的第4行向量的点乘的结果。

10.向量与矩阵的乘法

  因为向量也属于矩阵,所以也必须要满足矩阵与矩阵的乘法规则,所以对于行向量而言,行向量要左乘矩阵,对于列向量而言,列向量要右乘矩阵。行向量和列向量与一个相同的矩阵相乘的时候会得到不同的结果,因此我们要注意这是行向量和列向量的区别之一,在进行矩阵运算时特别小心。

  示例如下,对于行向量和列向量而言,得到的结果是不一样的。

  

  我们觉得使用行向量是比较符合的,以为行向量是左乘矩阵,符合我们的书写和理解,例如vABC,行向量v乘以3个矩阵得到最后的向量。但是对于ABCh,列向量h要从右往左乘才符合我们的理解。在DX3中使用的是行向量,但是在OpenGL中使用的是列向量,因此在运算前要注意行向量和列向量的转置才能保证不会出现计算的问题。

第二节:矩阵的几何解释

1.2D向量与矩阵相乘的几何意义

  对于2D向量v乘以矩阵M得到的依然是2D向量,所以我们可以理解矩阵M是对向量v的一种坐标变换。

  

  2D向量由原来的[1 1]变换为了[1 3]在几何中的表示如下,我们可以将矩阵M的每一行都能解释为转换后的基向量。所以原来的向量[1 1]可以被分解为[1 0]和[0 1],矩阵可以分解为[2 1]和[-1 2],那么可以看做基向量x,y轴从向量v变换到矩阵M。

  

  我们发现不光是2D向量v进行了变换,在这一个区域里的点都得到了关于矩阵M的变换。我们可以用下面的小机器人来表示。

  

2.3D向量与矩阵相乘的几何意义

  3D向量与矩阵相乘表示的含义是一样的,只不过与3D向量相乘的矩阵是影响的x,y,z三个轴。

  

3.矩阵的几何意义

  • 向量的几何意义是一条有向线段,而且向量可以进行三角形法则,所以我们可以将向量进行拆分成坐标轴的加法或者减法。
  • 矩阵我们可以将每一行元素看做一个向量,它用来表示我们最终向量所对应坐标轴的最终状态,这就是矩阵的几何意义。
  • 向量与矩阵的乘法本质就是坐标的转换,其几何意义就是表示向量拆分后,坐标进行变换,变成矩阵的每一行元素所表示的向量的位置。
时间: 2024-08-23 03:16:33

第七章:矩阵的相关文章

第七章 KinectV2结合MFC显示和处理图像数据(下)

第七章  KinectV2结合MFC显示和处理图像数据(下) 首先声明一下,本系统所使用的开发环境版本是计算机系统Windows 10.Visual Studio 2013.Opencv3.0和Kinect SDK v2.0.这些都可以在百度上找到,download下来安装一下即可. 一.在MFC中如何显示OpenCV的图像Mat 前段时间一直在学习opencv,但学习过程中写的例子都是基于控制台的.今天打算把之前写的一些例子都移植到MFC中,基本上就是复制以前的代码,唯一的区别在于在控制台中,

第七章 F# 库(五)

事件(Microsoft.FSharp.Control.Event)模块 可以把 F# 中的事件看做是函数的集合,能够通过函数调用来触发.其思想是,函数本身注册成事件,即函数的集合,等待事件发生的通知:然后,触发函数发出事件已经发生的通知,引发所有添加到事件中的函数被执行. 我们将讨论事件模块中的下列功能: 创建和处理事件:使用 create 和 add 函数来创建和处理事件的基础: 筛选(filter)函数:筛选进入事件中数据的函数: 分区(partition)函数:把进入事件中数据拆分成两部

Android群英传笔记——第七章:Android动画机制和使用技巧

Android群英传笔记--第七章:Android动画机制和使用技巧 想来,最近忙的不可开交,都把看书给冷落了,还有好几本没有看完呢,速度得加快了 今天看了第七章,Android动画效果一直是人家中十分重要的一部分,从早期的Android版本中,由于动画机制和绘图机制的不健全,Android的人机交互备受诟病,Android从4.X开始,特别是5.X,动画越来越完善了,Google也开始重视这一方面了,我们本章学习的主要内容有 Android视图动画' Android属性动画 Android动画

第七章

第七章 控制发光二极管. 尽管linux 驱动直接和硬件打交道,但并不是linux驱动直接向硬件中的内存写数据,而是与本机的i/o内存进行交互.所谓I/O内存是通过各种接口(PCI, USB.蓝牙以太网等)连接到主机的硬件在主机的内存映射.Linux内核提供了多个与I/O内存交互的函数.Linux内核的内存管理模块负责同步I/O内存与硬件的数据. 每一个连接Linux 的硬件在I/O内存中都会有映射首地址.在使用ioread 32.ioread32等函数读写I/O内存时需要指定这些首地址.Led

第七章:常用类

第七章:常用类 包装类 java中有8中基本类型,对应有八种包装类作用:包装类中封装了该类型常用的属性和方法,以方便操作.byte---->Byteshort--->Shortint--->Integerlong---->Longfloat---->Floatdouble---->Doublechar---->Characterboolean---->Boolean装箱:将基本数据类型转换成包装类,经常通过构造方法完成.Integer i = new Int

构建之法学习(第七章 MSF)

第七章 MSF MSF(Microsoft Solution Framework)微软解决方案框架: MSF是一套大型系统开发指南,是微软推荐的软件开发方法,它描述了如何用组队模型.过程模型和应用模型来开发Client/Server结构的应用程序,是在微软的工具和技术的基础上建立并开发分布式企业系统应用的参考. 一.MSF 9条基本原则 1.推动信息共享与沟通 --把所有信息都保留并公开,讨论要包括所有涉及的角色,决定要公开并告知所有人. 当然,对牵涉到技术机密.安全性等信息要采取必要的保护措施

Android开发艺术探索——第七章:Android动画深入分析

Android开发艺术探索--第七章:Android动画深入分析 Android的动画可以分成三种,view动画,帧动画,还有属性动画,其实帧动画也是属于view动画的一种,,只不过他和传统的平移之类的动画不太一样的是表现形式上有点不一样,view动画是通过对场景的不断图像交换而产生的动画效果,而帧动画就是播放一大段图片,很显然,图片多了会OOM,属性动画通过动态的改变对象的属性达到动画效果,也是api11的新特性,在低版本无法使用属性动画,但是我们依旧有一些兼容库,OK,我们还是继续来看下详细

第九章 前七章总结考试答案

前七章总结测验见附件内容

ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse

ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 提供ROS接口的3D软件比较多,本章以最典型的Gazebo介绍为主,从Player/Stage/Gazebo发展而来,现在独立的机器人仿真开发环境,目前2016年最新版本Gazebo7.1配合ROS(kinetic)使用. 补充内容:http://blo

构建之法第六、七章读后感

第六章 Scrum 是一个用于开发和维持复杂产品的框架 ,是一个增量的.迭代的开发过程.Scrum包括了一系列实践和预定义角色的过程骨架.Scrum中的主要角色包括同项目经理类似的Scrum主管角色负责维护过程和任务,产品负责人代表利益所有者,开发团队包括了所有开发人员. 敏捷流程一共有4步: 第一步:弄懂需求与任务是相互依赖的关系 第二步:想要学会把一个任务从产品层级的描述逐步细化到技术实现层面,那么技术能力和交流能力尤为重要的,根据每个人的能力来分配任务以保证任务的高效完成. 第三步:个人要