4.矩阵
11小时前
看电影Matrix让人神往,Matrix是什么,其实是一个矩阵,学这些
线性代数中,矩阵是以行和列形式组织的矩阵数字块.向量是标量的数组,矩阵是向量的数组.
向量的维度是它包含的数的个数,而矩阵的维度是看他有多少行和列.
Matrix: M1 M2 M3
M4 M5 M6
M7 M8 M9
行数和列数相同的矩阵称为方阵,方阵的对角线元素就是方阵中行号和列号相同的元素.其它元素为非对象线元素.
Matrix: [b]M1[/b] M2 M3
M4 [b]M5[/b] M6
M7 M8 [b]M9[/b]
//[b]这是一个方阵[/b],[b]绿色字代表对角线,[/b][b]紫色字代表非对角线元素[/b]
如果所有非对角线元素都为0,那么称这种矩阵为对角矩阵(diagonala).对角线元素为1,其它元素为0称为单位矩阵.任意一个矩阵乘以单位矩阵(Identity matrix),都将得到原矩阵.
Matrix: [b]1 0 0[/b]
0 1 0
0 0 [b]1[/b]
//这应该是一个对角矩阵同时又可以称为单位矩阵
矩阵的行数和列数可以是任意正整数,当然也包括1,所以一个n维向量能够被当成1xn的行向量,或是nx1的列向量
矩阵的转置在图像软件里有应该叫旋转吧,对于向量来说,他其实就是把行向量变成列向量,把列向量变成行向量.
也就是说任意矩阵都是可以转置的,转置两次,就能得到原矩阵.任意对角矩阵或是单位矩阵转置后都与原矩阵相同.
矩阵M能与标量k相乘,结果是一个和M维度相同的矩阵,操作就是k乘以M矩阵中的每一个元素.
两个矩阵能够相乘的条件是,矩阵A的列数和B的行数必须匹配,不然毫无意义,如R x N矩阵A乘以N x C矩阵B,得到一个RxC的矩阵
Cij =n[b]∑[/b]k=1aikbkj
[b] b11 b12 b13 b14 b15
[/b]
[b] b21 b22 b23 b24 b25[/b]
[b] a11 a12 c11 c12 c13 c14 c15[/b]
[b] a21 a22 c21 c22 c23 c24 c25
[/b]
[b] a31 a32 c31 c32 c33 c34 c35
[/b]
[b] [/b][b]a41 a42 c41 c42 c43 c44 c45[/b]
[b] //这样看来相当直观了,如c34 = a31b14 + a32b24
[/b]
[b]warring:[/b]
??任意矩阵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],这也可以解释为向量的加法
又如矩阵的扩展,乘法可作为转换.
11小时前
看电影Matrix让人神往,Matrix是什么,其实是一个矩阵,学这些
线性代数中,矩阵是以行和列形式组织的矩阵数字块.向量是标量的数组,矩阵是向量的数组.
向量的维度是它包含的数的个数,而矩阵的维度是看他有多少行和列.
Matrix: M1 M2 M3
M4 M5 M6
M7 M8 M9
行数和列数相同的矩阵称为方阵,方阵的对角线元素就是方阵中行号和列号相同的元素.其它元素为非对象线元素.
Matrix: [b]M1[/b] M2 M3
M4 [b]M5[/b] M6
M7 M8 [b]M9[/b]
//[b]这是一个方阵[/b],[b]绿色字代表对角线,[/b][b]紫色字代表非对角线元素[/b]
如果所有非对角线元素都为0,那么称这种矩阵为对角矩阵(diagonala).对角线元素为1,其它元素为0称为单位矩阵.任意一个矩阵乘以单位矩阵(Identity matrix),都将得到原矩阵.
Matrix: [b]1 0 0[/b]
0 1 0
0 0 [b]1[/b]
//这应该是一个对角矩阵同时又可以称为单位矩阵
矩阵的行数和列数可以是任意正整数,当然也包括1,所以一个n维向量能够被当成1xn的行向量,或是nx1的列向量
矩阵的转置在图像软件里有应该叫旋转吧,对于向量来说,他其实就是把行向量变成列向量,把列向量变成行向量.
也就是说任意矩阵都是可以转置的,转置两次,就能得到原矩阵.任意对角矩阵或是单位矩阵转置后都与原矩阵相同.
矩阵M能与标量k相乘,结果是一个和M维度相同的矩阵,操作就是k乘以M矩阵中的每一个元素.
两个矩阵能够相乘的条件是,矩阵A的列数和B的行数必须匹配,不然毫无意义,如R x N矩阵A乘以N x C矩阵B,得到一个RxC的矩阵
Cij =n[b]∑[/b]k=1aikbkj
[b] b11 b12 b13 b14 b15
[/b]
[b] b21 b22 b23 b24 b25[/b]
[b] a11 a12 c11 c12 c13 c14 c15[/b]
[b] a21 a22 c21 c22 c23 c24 c25
[/b]
[b] a31 a32 c31 c32 c33 c34 c35
[/b]
[b] [/b][b]a41 a42 c41 c42 c43 c44 c45[/b]
[b] //这样看来相当直观了,如c34 = a31b14 + a32b24
[/b]
[b]warring:[/b]
??任意矩阵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],这也可以解释为向量的加法
又如矩阵的扩展,乘法可作为转换.