4.矩阵
4.矩阵
11小时前
看电影Matrix让人神往,Matrix是什么,其实是一个矩阵,学这些
线性代数中,矩阵是以行和列形式组织的矩阵数字块.向量是标量的数组,矩阵是向量的数组.
向量的维度是它包含的数的个数,而矩阵的维度是看他有多少行和列.
Matrix: M1 M2 M3
M4 M5 M6
M7 M8 M9
行数和列数相同的矩阵称为方阵,方阵的对角线元素就是方阵中行号和列号相同的元素.其它元素为非对象线元素.
Matrix: M1 M2 M3
M4 M5 M6
M7 M8 M9
//这是一个方阵,绿色字代表对角线,紫色字代表非对角线元素
如果所有非对角线元素都为0,那么称这种矩阵为对角矩阵(diagonala).对角线元素为1,其它元素为0称为单位矩阵.任意一个矩阵乘以单位矩阵(Identity matrix),都将得到原矩阵.
Matrix: 1 0 0
0 1 0
0 0 1
//这应该是一个对角矩阵同时又可以称为单位矩阵
矩阵的行数和列数可以是任意正整数,当然也包括1,所以一个n维向量能够被当成1xn的行向量,或是nx1的列向量
矩阵的转置在图像软件里有应该叫旋转吧,对于向量来说,他其实就是把行向量变成列向量,把列向量变成行向量.
也就是说任意矩阵都是可以转置的,转置两次,就能得到原矩阵.任意对角矩阵或是单位矩阵转置后都与原矩阵相同.
矩阵M能与标量k相乘,结果是一个和M维度相同的矩阵,操作就是k乘以M矩阵中的每一个元素.
两个矩阵能够相乘的条件是,矩阵A的列数和B的行数必须匹配,不然毫无意义,如R x N矩阵A乘以N x C矩阵B,得到一个RxC的矩阵
Cij =n∑k=1aikbkj
b11 b12 b13 b14 b15
b21 b22 b23 b24 b25
a11 a12 c11 c12 c13 c14 c15
a21 a22 c21 c22 c23 c24 c25
a31 a32 c31 c32 c33 c34 c35
a41 a42 c41 c42 c43 c44 c45
//这样看来相当直观了,如c34 = a31b14 + a32b24
warring:
??任意矩阵M乘以方阵S,不管哪边乘,都将得到与原矩阵大小相同的矩阵.当然前提是假定乘法有意义,如果S是单位矩阵,结果将是原矩阵M,即MI(单位矩阵)=IM=M
??矩阵乘法满足结合律,即(AB)C=A(BC)
??矩阵乘法也满足与标量或向量的结合律,即:(kA)B=k(AB)=A(kB) (vA)B=v(AB)
??矩阵积的转置相当于先转置矩阵然后以相反的顺序乘:(ABt)=BtAt
行向量左乘矩阵时,结果是行向量,列向量右乘矩阵时,结果是列向量,行向量右乘和列向量左乘都是不合法的
行向量与列向量的战争:
1.支持行向量
??在文字中使用行向量的形式更好一些,利于书写,程序中也是一样.
??我们在作矩阵乘法作坐标系转换时,用行向量比较流畅,如A、B、C都是矩阵,但要转换成向量v,用行向量记作vABC,用列向量记作CBAv,前者左向右更为直观,后者则是先右到左计算.
??Directx使用是的行向量.
2.支持列向量
??等式中使用列向量形式更好
??线性代数书中多使用列向量
??多本计算机图形学圣经都使用列向量
??OpenGL使用列向量
矩阵转换成向量,如向量[1,-3,-4]能够被解释为位移[1,0,0],然后位移[0,-3,0],最后位移[0,0,4],这也可以解释为向量的加法
又如矩阵的扩展,乘法可作为转换.