向量、矩阵应用介绍|学习笔记

简介: 快速学习向量、矩阵应用介绍

开发者学堂课程【大数据学习 - 数学基础及应用向量、矩阵应用介绍】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/519/detail/7036


向量、矩阵应用介绍


内容介绍:

一、向量在游戏引擎中的应用

二、矩阵奇异值分解及其应用


一、向量在游戏引擎中的应用

1、点乘

点乘:判断敌人位置

P:玩家位置,E: 敌人位置

v=E-P,f: 指向玩家面对的方向的向量

d=v·f:

为正数,敌人在玩家身前,否则,在身后。

图片1.png

VR  AR 的应用领域非常火,现在有些应用正在开发,有些项目正在进行中,所以游戏引擎是 VR 项目中一个非常重要的部分,负责三维图形的生产以及渲染,还包括一些物理逻辑点乘游戏引擎中可以用来判断敌人的位置,确定玩家的位置和敌人的位置,对于一个相同的坐标原点来说都是一个向量,敌人位置向量减去玩家位置 P 向量会得到一个 V 向量,再用 F 指向玩家面对方向的向量乘以 V 向量。如果是正数敌人在玩家的身前,否则就是在身后。原理可以看图片,a 和 b 乘点成的结果是 a 的模乘以 b 的模再乘以它们的夹角的余弦。如果夹角大于90度小于零,敌人在玩家身后,如果夹角小于90度是大于零,敌人在玩家身前。

2、叉乘

叉乘:力矩物理模拟

当一个力施加到一个对象上时,它将使对象产生旋转运动(如果力并非施加在对象的重心)。这个旋转力被称作力矩。

计算方式:给定力 F,以及从重心到受力点的向量 r,力矩 N=rxF。

图片2.png

右手法则从 a 叉乘 b ,从 a 向量的方向到 b 向量的方向,最终结果向量的方向是大拇指的指向,在物理概念是一个例句的原理,所以在物理模拟中叉乘可以模拟例句的物理现象。

3、碰撞检测

(1)把小球的位置看成一个向量,这个向量的长度(模)大于或等于圆的半径 r 时,即判断发生了碰撞

(2)只要把速度向量取反,得到 vo,再求出|与 vo 之间的夹角 α,再让 v0 旋转 2*α(因 β=α) 的角度。

图片3.png

比如在游戏场景中有一个小球,把小球的位置看成一个向量,向量的长度如果大于或等于圆的半径就认为发生了碰撞,大圆代表小球的活动范围,也可以看作是一个圆形的墙壁,碰撞之后会在现实生活中有一个反弹,反弹方向可以看 v 向量与 y 轴有 α 角度的夹角。

在碰撞之后,如果是非常理想的碰撞条件下,先把 v 做一个取反,相当于 vo 向量,然后再让 vo 旋转二乘以 α 角度得到 v1,因为是理想的碰撞情况,认为 α 和 β 角度大小是一样的,所以旋转二产 α 的角度,v1 就是碰撞之后小球弹出去的方向,这是碰撞检测中的一些向量在碰撞检测中的应用。


二、矩阵奇异值分解及其应用

1、奇异值分解( Singular Value Decomposition)

一种矩阵分解形式,它将一个矩阵分解为三个子矩阵,分别代表了左奇异向量,奇异值矩阵以及右奇异向量。

A=U∑VT 

A 是一个 M*N 的矩阵,那么得到的 U 是一个 M*M 的方阵(里面的向量是正交的,U 里面的向量称为左奇异向量),∑ 是一个 M*N  的矩阵(除了对角线的元素都是 0,对角线上的元素称为奇异值),VT 是一个 N*N 的矩阵,里面的向量也是正交的,V 里面的向量称为右奇异向量)

在各种场景中应用非常多,奇异值分解是一种矩阵的分解形式,跟 LU 分解和特征值分解是并列的一种矩阵分解形式,可以将一个矩阵分解为三个子矩阵,可以看作 a 就等于 U∑VT,在三个字之中左边的优势是左奇异矩阵,中间的 ∑ 是奇异值矩阵,VT 矩阵包含的是右奇异向量。

2、替在语义索引( Latent Semantic Indexing,LSI)    

行:表示一个词在哪些 title 中出现了

列:表示一个 title 中有哪些词

图片4.png

中间的矩阵则表示词类和文章类之间的相关性

潜在语义索引是把语义的相关内容融合到搜索引擎中,来提高搜索引擎的效率,矩阵的列表示 title 中有哪些词,title 可以看作是这篇文章的主题或者它的标题,矩阵的行是表示一个词在哪些主题或者标题中出现,比如第一行 book 在 T3 和 T4 的文章主题中各出现一次,经过矩阵的奇异值分解之后大的矩阵会被分解为三个矩阵,左侧的左奇异矩阵、中间的奇异值矩阵和右侧的右奇异矩阵。

图片5.png

奇异值矩阵是三乘三维度的矩阵,通过 SVD 的分解潜在语义包含三类,文章以及单词总共的类别都在三个类别里面,中间的矩阵表示的是词类和文章类的相关性有 3.91,表示的是第一类词和第一类文章的相关性是 3.91。相关性的数值越大相关性越强。

将左奇异向量和右奇异向量都取后2维,投影到一个平面上

可以同时对词和文档进行聚类

用户检索文档,是用语义级别(近义词集合)去检索,而不是之前的词的级别,大大提升检索效率

图片6.png

上面的取证左奇异矩阵和右奇异矩阵都可以看作有三个维度,这幅图中为了很好的表达只取了后两位投影到一个平面上,可以达到对词和文档 title 同时进行聚类的效果,比如红色类别的 title 包括 T1 和T3 词包括 stock 、market,可以认为在类别中不管是文章还是关键词都表示的是证劵市场以及金融方面的内容,会同时把词和文档都聚类到类别中,用户检索文档的过程中会由之前在词的级别上进行检索,变成在语义级别上进行检索,在近义词集合层级上进行检索,非常大的提升检索效率。

相关文章
|
11月前
|
C++ 容器
C++学习笔记_15 线性容器-vector容器 2021-05-12
C++学习笔记_15 线性容器-vector容器 2021-05-12
|
搜索推荐
学习笔记: 线性代数-向量的定义
线性代数个人学习笔记
123 0
|
存储 编译器 C++
C++学习笔记(十四)——vector的模拟实现(二)
C++学习笔记(十四)——vector的模拟实现
C++学习笔记(十四)——vector的模拟实现(二)
|
存储 编译器 C++
C++学习笔记(十四)——vector的模拟实现(一)
C++学习笔记(十四)——vector的模拟实现
C++学习笔记(十四)——vector的模拟实现(一)
|
算法 C++
C++学习笔记(十五)——vector练习题
C++学习笔记(十五)——vector练习题
C++学习笔记(十五)——vector练习题
|
存储 算法 C++
C++学习笔记(十三)——vector
C++学习笔记(十三)——vector
C++学习笔记(十三)——vector
|
编译器 C++ 索引
C++菜鸟学习笔记系列(8)——标准库类型vector
C++菜鸟学习笔记系列(8)——标准库类型vector
117 0
C++菜鸟学习笔记系列(8)——标准库类型vector
|
机器学习/深度学习 算法 搜索推荐
高维向量检索的设计与实践(一)|学习笔记
快速学习高维向量检索的设计与实践(一)
236 0
高维向量检索的设计与实践(一)|学习笔记