Unity Shader学习日记 part 2 线性代数--矩阵

server/2024/12/22 9:37:02/

矩阵的基础概念这里就不用说了。

先来看看矩阵的乘法

矩阵乘法

        对于矩阵A*矩阵B有这样的要求

        1.左边矩阵的(A)列数等于右边矩阵的(B)的行数

        2.相乘的的结果是一个左边矩阵的(A)行数*右边矩阵(B)的列数的矩阵

        3.相乘的时候,用左边矩阵(A)的每一行乘以右边矩阵(B)的每一列,然后相加

例子:

注意:

        矩阵的相乘不满足交换律,A*B不等于B*A

        矩阵的相乘满足结合律,A*(B*C)=(A*B)*C

特殊的矩阵

1.方块矩阵

        方块矩阵:又称方阵,指行和列数量相等的矩阵,如3*3,4*4

2.对角矩阵

        对角矩阵:只有主对角线上有值的方阵,其余地方为0

        主对角线:从左上角到右下角的对角线。

3.单位矩阵

        单位矩阵主对角线的值为1的对角矩阵

性质:任何矩阵M和单位矩阵I相乘的结果都是矩阵本身M(需要满足相乘规则)

4.数量矩阵

        数量矩阵主对角线的值是同一个值的对角矩阵

5.转置矩阵

        转置矩阵矩阵的行和列互换后的矩阵(在右上角加T表示)

性质:

        1.矩阵转置的转置等于原矩阵

        2.矩阵串接的转置等于反向串接各矩阵的转置

6.逆矩阵

        逆矩阵:逆矩阵是什么不重要,重要的是怎么求逆矩阵。逆矩阵通常在右上角加-1表示。需要注意的是并不是所有矩阵都有逆矩阵,有逆矩阵矩阵,成为可逆的或非奇异的。没有逆矩阵矩阵成为不可逆的或奇异的。

矩阵的求解

        1.确定矩阵是否为方阵

        2.求矩阵的行列式,行列式为0的矩阵不可逆(没有逆矩阵

        3.求矩阵的代数余子式矩阵

        4.求标准伴随矩阵代数余子式矩阵的转置

        5.逆矩阵标准伴随矩阵/行列式

1.行列式求解

        口诀:左上左下画对角线,线上数字相互乘法,数量不够对面取,朝下相加,朝上相减

      

2.代数余子式的求解

        计算规则:Cij=-1的i*j次幂乘以除去i行j列的剩下的矩阵

例子:

矩阵的性质

        1.逆矩阵的逆矩阵等于原矩阵

        2矩阵乘以自己的逆矩阵等于单位矩阵

        3.单位矩阵的逆矩阵是它本身

        4.转置矩阵的逆矩阵是逆矩阵的转置

        5.矩阵串接相乘的逆矩阵等于反向串接各矩阵的逆矩阵相乘

        6.逆矩阵可以计算矩阵变换的反向变换

7.正交矩阵

        正交矩阵:如果一个方阵和他的转置矩阵相乘等于单位矩阵的话,则这个方阵就是正交矩阵

        

而在学习矩阵的时候,逆矩阵有一个性质:矩阵和他的逆矩阵乘积等于单位矩阵

        这就意味着,如果一个矩阵是正交矩阵,那么他的逆矩阵就是他的转置矩阵,同样的,他的转置矩阵也是他的逆矩阵

        向量的点乘:A(x1,y1,z1) B(x2,y2,z2)  A*B=x1*x2+y1*y2+z1*z2.

        对于向量的点乘而言,如果点乘结果为0,那么这两个向量相互垂直,点乘实际上求的是一个向量在另一个向量上的投影。

        如果向量和自己的点乘结果为1,那么这个向量是单位向量

        回到正交矩阵。对于正交矩阵而言,矩阵正交,那么他的转置矩阵也是正交的

        正交矩阵的性质:

                 1.正交矩阵的每一行(列)都是单位向量

                 2.正交矩阵的每一行(列),相互垂直

        矩阵正交判断:

                1.

                2.对于n维向量(v1,v2,v3,...)而言,向量的模长|v|=(v1^2+v2^2+v3^2+.....+vn^2)=1

                   同时,矩阵的每一行(列)相互垂直

8.行矩阵与列矩阵

        行矩阵:只有一行的矩阵

        列矩阵:只有一列的矩阵

        需要注意的是,在Unity中的使用规则:

                在标准的线性代数中,矩阵与向量的相乘是按列相乘的,为了与标准数学和线性代数统一,也使用了按列计算的规则。说人话就是,矩阵和向量的相乘中,把向量转为列矩阵进行计算

        同样的也可以使用行矩阵,所以为了保持结果一致,有这样的规则

        列:CBAv=C(B(Av))  ==  行: vA(t)B(t)C(t)=(((vA(t))B(t))C(t) 使用转置矩阵

矩阵的作用主要是变换,之后会了解到。

那么矩阵的基础就先到这

http://www.ppmy.cn/server/152200.html

相关文章

MaskGCT——开源文本转语音模型,可模仿任何人说话声音

前期介绍过很多语音合成的模型,比如ChatTTS,微软语音合成大模型,字节跳动自家发布的语音合成模型Seed-TTS。其模型随着技术的不断发展,模型说话的声音也越来越像人类,虽然 seed-tts 可以进行语音合成等功能&#xff0c…

Day49 单调栈part02

42. 接雨水 接雨水这道题目是 面试中特别高频的一道题,也是单调栈应用的题目,大家好好做做。 建议是掌握 双指针 和单调栈,因为在面试中 写出单调栈可能 有点难度,但双指针思路更直接一些。在时间紧张的情况有,能写出双指针法也是不错的,然后可以和面试官在慢慢讨论如何…

经济学 ppt 2 部分

前言 上一次复习经济学是好久之前了,看了第一章的 ppt ,好像重点就是谁是软件经济学之父。昨天老师讲了一下题型,20 分选择题, 20 分判断题,20 分计算题,6 6 8 三个计算题,25 分表格&#xff0…

10. 考勤信息

题目描述 公司用一个字符串来表示员工的出勤信息 absent:缺勤late: 迟到leaveearly: 早退present: 正常上班 现需根据员工出勤信息,判断本次是否能获得出勤奖,能获得出勤奖的条件如下: 缺勤不超过一次,没有连续的迟到/早退:任意连续7次考勤&a…

android liveData更新UI数据

1.创建LiveData的javaBean对象 public class ModelBean extends LiveData {private int flag; private String time; private String batteryStr; private int battery; //蓝牙连接状态 private int resourceId; private Boolean isConnected; private String mDeviceName; //…

nano编辑器怎么退出并保存

在使用 nano 编辑器时,退出并保存文件的操作如下: 保存更改:在编辑器中完成编辑后,按下 Ctrl O(字母O,不是数字0)键来保存更改。nano 会提示你输入文件名以保存更改。 退出编辑器:…

jvm字节码中方法的结构

“-Xss”这一名称并没有一个特定的“为什么”来解释其命名,它更多是JVM(Java虚拟机)配置参数中的一个约定俗成的标识。在JVM中,有多个配置参数用于调整和优化Java应用程序的性能,这些参数通常以一个短横线“-”开头&am…

【Spring】Spring的模块架构与生态圈—数据访问与集成(JDBC、ORM、Transactions)

在企业级应用中,数据的存储和访问是核心功能之一。Java开发语言通过Spring框架提供了多种方式来实现数据访问和集成,包括JDBC(Java Database Connectivity)、ORM(对象关系映射)以及事务管理。这些技术的有效…