线性代数 - 矩阵基础知识

这边不去理解或推导为什么要这么算,没啥实际意义,都是直接按矩阵规定好的公式套用

 

加减法

C=A+B

C=A-B

a) A和B的行和列必须相同

 

 

 

乘法, 没有除法

C=A*B

a) A的列数和B的行数相同才能相乘,结果矩阵C的行列为:A的行数,B的列数

b1) 示例1:A为2列,B为2行,可以相乘;结果为2行2列(A的行,B的列)

计算过程:A的第1行与B的第1列进行运算,作为结果的1行1列的值;A的第2行与B的第1列进行运算,作为结果的2行1列的值

 

b2) 例2:

b3) 例3:

 b4) 例4:

b5) 例5:矩阵嵌套矩阵的情况

其中,,a, b, c, d均为常数

 

 

c) 不满足交换律:A*B和B*A会得到不同行列的C

d) 满足结合律:(A*B)*C=A*(B*C)

e) 满足分配律:(A+B)*C=A*C+B*C, A*(B+C)=A*B+A*C

 

 

转置矩阵

就是把矩阵的行列互换,用AT来表示

Matrix4x4 m = new Matrix4x4();
m.m00 = 1;
m.m01 = 2;
m.m02 = 3;
m.m03 = 4;
Debug.Log($"{m}");

var m2 = Matrix4x4.Transpose(m);
Debug.Log($"{m2}");

结果

 

 

逆矩阵

a) 方阵才有逆矩阵,但并不是所有方阵都有逆矩阵

b) 原矩阵*逆矩阵,结果为单位矩阵。m*m-1=I

c) 求逆矩阵的方法,这边不做介绍,这边只关心用途。Unity里直接用Matrix4x4.Inverse就可以得到。

d) 在Unity中的用途之一:获得反向变换矩阵

localPos转换为worldPos使用localToWorldMatrix,那它的逆矩阵Matrix4x4.Inverse(localToWorldMatrix)就可以将worldPos转换为localPos。

localToWorldMatrix的逆矩阵其实就是worldToLocalMatrix

if (this.transform.worldToLocalMatrix == Matrix4x4.Inverse(this.transform.localToWorldMatrix))
{
    Debug.Log("ok");
}

 

 

正交矩阵 

a) 定义:方阵*它的转置矩阵结果为单位矩阵(即:m*mT=I或mT*m=I),这个方阵就是正交的,叫做正交矩阵

b) 因为m*m-1也等于单位矩阵I,所以正交矩阵的转置矩阵=逆矩阵。(注意:方阵的转置矩阵不一定就是它的逆矩阵)

c) 用途:遇到正交矩阵,就不需要用公式算逆矩阵了,直接用转置矩阵,优化计算效率。

d) 像旋转矩阵就是正交矩阵,它的转置矩阵可以直接当做逆矩阵来用。

 

 

一些符号

Rn:表示n维向量

Rnxm:表示n行m列矩阵

 

 

用矩阵表达向量

1) 一个向量用矩阵表示
(a*x1, a*y1, a*z1),其中a为常数

 (a*x1, a*y1, a*z1, a*a+d),矩阵增加的第4行|a, b, c, d|并不会参与到xyz的计算中,所以没事

 
2) 用矩阵表示2个向量相加
a(x1, y1, z1) + b(x2, y2, z2),其中a, b为常数
(x1, y1, z1, 1) + (x2, y2, z2, 1)
a(x1, y1, z1, 1) + (x2, y2, z2, 1)

 

3) 用矩阵表示3个向量相加
a(x1, y1, z1) + b(x2, y2, z2) + c(x3, y3, z3),其中a, b, c为常数,也可以写成(a*x1, a*y1, a*z1) + (b*x2, b*y2, b*z2) + (c*x3, c*y3, c*z3)
 
4) 矩阵相乘与向量点乘的关系

xa2+xb2+xc2=(xa, xb, xc)●(xa, xb, xc)

xa*ya+xb*yb+xc*yc=(xa, xb, xc)●(ya, yb, yc)

以此类推,还用下面这样的写法:

 

参考

矩阵乘法 - 博客园 (cnblogs.com)

图形学知识基础:矩阵_王王王渣渣的博客-CSDN博客_图形学 矩阵

矩阵和矩阵乘法的直观化理解_拂面清风三点水的博客-CSDN博客_矩阵与矩阵乘法感悟

MathTool - 公式编辑器 (imathtool.com)

逆矩阵 (shuxuele.com)

用初等行运算(高斯-若尔当)来求逆矩阵 (shuxuele.com)

用余子式、代数余子式和伴随来求逆矩阵 (shuxuele.com)

求矩阵的逆的三种方法_charlotte0000的博客-CSDN博客_矩阵求逆 

方阵的行列式记为det(A)或者|A|, 矩阵的行列式 (shuxuele.com)

posted @ 2023-02-21 23:59  yanghui01  阅读(400)  评论(0编辑  收藏  举报