当前位置: 首页 > article >正文

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

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

先来看看矩阵的乘法

矩阵乘法

        对于矩阵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.kler.cn/a/445018.html

相关文章:

  • git使用和gitlab部署
  • CSDN数据大屏可视化【开源】
  • 基于langchain的Agent(实现实时查询天气)
  • OpenCV(python)从入门到精通——运算操作
  • Kubernetes(K8s)学习笔记
  • C# Winform双色纸牌接龙小游戏源码
  • 搭建 Elasticsearch 集群:完整教程
  • 分布式链路追踪简介-01-dapper 论文思想介绍
  • linux部分rpm包总结描述
  • libilibi项目总结(17)Elasticsearch 的使用
  • 搭建私有链
  • C++ 引用的基本用法
  • 403 Forbidden HTTP 响应状态码
  • 大模型在研发提效方面的实践(附最佳实践资料)
  • uniapp自定义树型结构数据弹窗,给默认选中的节点,禁用所有子节点
  • electron 顶部的元素点不中,点击事件不生效
  • 模组 RG500Q入网问题分析
  • 用python写一个接口
  • 【中间件介绍及案例分析】
  • 回归预测 | MATLAB实现CNN-BiLSTM卷积神经网络结合双向长短期记忆神经网络多输入单输出回归预测
  • 探索 AnythingLLM:借助开源 AI 打造私有化智能知识库
  • 计算机工作流程
  • Linux dnf 包管理工具使用教程
  • 在linux系统的docker中安装GitLab
  • 三维引擎cesium学习经验
  • 增强现实(AR)和虚拟现实(VR)的应用