矩阵
-
矩阵的定义
-
矩阵不是向量,向量是标量的数组,而矩阵是向量的数组。
-
矩阵的表示方式,例如4x3行列矩阵,格式如下
Mij表示M的第i行第j列元素。
-
矩阵的方阵
- 行列相等的矩阵就是方阵,例如2X2,3X3等
- 对角线元素就是方阵的行列号相同的元素,例如m11,m22,m33
- 除了对角线元素其他的元素都为零,称为对角矩阵,例如4X4矩阵
- 单位矩阵是一种特殊的对角矩阵,例如
-
向量与矩阵的使用
- 矩阵的行列可以是任意正整数
- 向量可以表示为矩阵,因为矩阵是向量的数组,一维矩阵可以表示为向量,两种表示方式如下,一种是行向量,一种是列向量,注意在使用矩阵和向量做数学计算时,要区分是行列向量。
-
转置矩阵
- 矩阵的转置就是把矩阵沿着对角线翻折,看字母位置变化。
- 对于向量来说,行列向量也是矩阵的一维表示,可以通过矩阵的转置变化。
- 任意矩阵M的转置的转置等于原矩阵,(Mt)t =M
- 对于任意对角矩阵D,,D的转置等于原矩阵,Dt=D,包括单位矩阵也是
-
矩阵的乘法
- 矩阵能与标量相乘
- 矩阵乘以矩阵有相关规定,例如A与B矩阵的相乘AXB=C,A矩阵的列数必须等于B矩阵的行数才能满足矩阵乘法计算。
计算法则,C矩阵的第一个元素等于A矩阵的第一行乘以B矩阵的第一列,也就是向量相乘(点乘),因为矩阵是向量的数组。 求出来的C矩阵的列数等于B矩阵的列数,C矩阵的行数等于A矩阵的行数。
- 假设乘法满足,矩阵乘以单位矩阵,结果就是单位矩阵。MI=IM=M
- 矩阵不满足交换律,AB!=BA
- 矩阵乘法满足结合律,(AB)C=A(BC)
- 矩阵积的转置相当于先转置然后以相反的顺序相乘,(AB)t=BtAt
-
向量与矩阵的乘法
- 向量也是表示一维的矩阵,分为列向量和行向量。
- 向量与矩阵相乘也是矩阵与矩阵相乘。
- 但左乘向量与右乘矩阵的结果是不同的
行向量乘法
列向量乘法
得到的结果是不同的,注意相乘的前提是满足矩阵的乘法计算。
- 如果使用的是行向量乘法,矩阵的乘法顺序是从左到右读,例如vABC,v乘以矩阵A再乘以B乘以C。 如果使用的是列向量乘法,矩阵的乘法顺序是从右到左读,例如CBAv
-
-
矩阵的几何意义
-
矩阵是如何变化向量的
-
一个向量解释成一系列与轴平行的位移。例如
v = [x y z],能被解释为
= [x 0 0] + [0 y 0] + [0 0 z]
= x [1 0 0] + y [0 1 0] + z [0 0 1] -
设向量i,j,k分别为指向+x,+y和+z方向的单位向量
i = [1 0 0]
j = [0 1 0]
k = [0 0 1]
带入以上公式,则有
v = xi +yj +zk -
这里i,j和k可以称为基向量,一个向量能够用任意3个线性无关的基向量定义,向量可以表示为基向量的线性组合. 例如向量v就是由y与x的线性组合,v=1y+1x,向量v表示向基向量偏移的线性组合。
可以根据三角形法则推出基向量。 -
把i,j,k基向量与矩阵M相乘,以单位矩阵为例,得到
行矩阵乘法,矩阵的每一行都能解释为转换后的基向量。
列矩阵乘法,矩阵的每一列都能解释为转换后的基向量。 -
向量v与矩阵M相乘有 ,这是行乘法
= [ u x m 11 u_xm_{11} uxm11+ u y m 21 u_ym_{21} uym21+ u z m 31 u_zm_{31} uzm31 , u x m 12 u_xm_{12} uxm12+ u y m 22 u_ym_{22} uym22+ u z m 32 u_zm_{32} uzm32 , u x m 13 u_xm_{13} uxm13+ u y m 23 u_ym_{23} uym23+ u z m 33 u_zm_{33} uzm33]把 iM=p , jM=q , kM=r ,根据矩阵乘法,带入得
那么与上面所讲的公式一致,xyz表示ijk方向的缩放,也就是向量v由ijk的线性组合而成 -
逆向推出矩阵,在已知一个向量变换前以及变换后的结果,可以通过矩阵乘法规则推出矩阵M为
变化后的向量为:= [ u x m 11 u_xm_{11} uxm11+ u y m 21 u_ym_{21} uym21+ u z m 31 u_zm_{31} uzm31 , u x m 12 u_xm_{12} uxm12+ u y m 22 u_ym_{22} uym22+ u z m 32 u_zm_{32} uzm32 , u x m 13 u_xm_{13} uxm13+ u y m 23 u_ym_{23} uym23+ u z m 33 u_zm_{33} uzm33]变化前的向量为:= [ u x u_x ux, u y u_y uy, u z u_z uz]
那么
[ u x u_x ux, u y u_y uy, u z u_z uz]M= [ u x m 11 u_xm_{11} uxm11+ u y m 21 u_ym_{21} uym21+ u z m 31 u_zm_{31} uzm31 , u x m 12 u_xm_{12} uxm12+ u y m 22 u_ym_{22} uym22+ u z m 32 u_zm_{32} uzm32 , u x m 13 u_xm_{13} uxm13+ u y m 23 u_ym_{23} uym23+ u z m 33 u_zm_{33} uzm33]
根据矩阵乘法规则,推出矩阵M为
-
综上,矩阵的行可以解释为变换后的基向量(乘以单位向量时得到矩阵的每一行),那么乘以该矩阵就相当于执行了一次坐标转换,若有aM=b,可以解释为,M将a转换到b
-
例子,例如矩阵
从矩阵中解析基向量p和q,
具体描述图示,p是通过x轴的单位向量变换得到的,q是通过y轴的单位向量矩阵变换得到的
根据矩阵的行可以解释为的基向量,那么矩阵
在深入了解,就是可以把某一向量解释以qp为基向量的线性组合 ,例如
把xy基向量逆时针旋转45度,那么v的向量怎么变换,v变换后的方向是通过缩放或扩展变换后的基向量的线性组合
可以通过构造矩阵M乘以向量v得到的也是(0,2),注意列乘法与行乘法的区别,这里是列乘法, -
总结
- 矩阵的每一行可以表示为变换后的基向量(以行向量为例)
- 矩阵表示是变化,变化向量在不同基向量的表示。
- 矩阵的变换,符合变换后保持原点,直线和平行线,就是一种线性变换
- 在列乘法中,一个3x2的矩阵会把一个向量转换为一个三维空间下的向量,矩阵相乘的结果,行会等于第一个矩阵的行,第二个矩阵的列(记住,一个向量可以表示为3x1,或者2x1等矩阵,同理一个2x3的矩阵会把一个向量转换为一个二维空间下的向量
-
-
相关资料
- B站视频,https://www.bilibili.com/video/BV1Ys411k7yQ/?spm_id_from=333.788.videocard.1
- 3D.Math.Primer.for.Graphics.and.Game.Development
- UnityShader入门精要
-