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

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

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

课程地址https://developer.aliyun.com/learning/course/354/detail/4178


向量、矩阵应用介绍

内容介绍:

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

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


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

1.背景:游戏引擎中的 VR 和 AR 的应用非常广泛,负责一些三维图层的生成以及渲染以及一些物理逻辑的应用。所以就举一个向量在游戏引擎中的例子。

2.点乘:向量的点承在游戏引擎中用来判断敌人的位置

例:确定了玩家位置以及敌人位置,对于一个相同的坐标原点来说,都是向量。

敌人位置E;玩家位置P;V=E-P

F:指向玩家面对的方向的向量

D=V*F  为正数敌人在玩家的身前,为负数则敌人在玩家身后

image.png

原理:a*b 点乘就是 a 的模 ×b 的模夹角的余弦,如果夹角大于90度则为小于0,敌人在玩家身后;如果夹角小于90度则大于0,敌人在玩家身前。

3.叉乘:(右手法则从 a 向量的位置叉乘到 b 向量的位置,最终结果向量的方向是大拇指的方向)力矩物理模拟原理。所以在物理模拟中叉乘是可以模拟力矩物理现象。

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

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

image.png

4.碰撞检测:

把小球的位置看成一个向量,这个向量的长度(模)大于或等于圆的半径r时,即判断发生了碰撞。大圆是小球活动范围,也可以堪称圆型墙壁。碰撞后在现实生活中还会反弹,反弹方向如何定义,可以看图中 v 项量与 y 轴有 a 夹角,在一种非常理想的碰撞条件下,只要把速度向量取反,得到 vo,再求出I与 vo 之间的夹角 a,再让 v0 旋转2*a 的角度,得到 v1,因为是理想的碰撞情况我们认为 a 和 b 相等。所以 v1 就是小球碰撞后弹出去的方向,以上是向量在碰撞检测中的应用。

image.png


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

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

一种矩阵分解形式,与 lu 分解以及特征值分解是并列的矩阵分解形式。它将一个矩阵分解为三个子矩阵,分别代表了左奇异向量,奇异值矩阵以及右奇异向量。

A=U∑VT  

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

2.潜在语义索引(Latent Semantic Indexing,LSI)

将语义相关内容融合到搜索引擎中,用来提高搜索引擎的效率

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

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

title 表示文章的主题/标题

例:book 这个词在 T3和 T4文章中出现一次

image.png

经过矩阵的奇异值分解之后,大的矩阵被分解成三个矩阵,左侧的左奇异矩阵,中间的奇异值矩阵和右侧的右奇异矩阵,奇异值矩阵是3*3维度的矩阵,通过 svd 的分解,认为他的潜在语义包含三类语义,这些文章以及单词总共的类别都在这三个大类别中,中间的矩阵表示的是词类、文章类的相关性,相关性数值越大表示相关性越强。

从下图可以看出左奇异矩阵和右奇异矩阵都有三个维度

image.png

如下图,将左奇异向量和右奇异向量都取后2维,投影到一个平面上,可以同时对词和文档(title)进行聚类。红色的类别包括 T1和 T3,词包括 stock 和 market,可以认为在这个类别中,不管是文章还是关键词表示的是证券、金融、市场方面的内容,用户检索文档,是用语义级别(近义词集合)去检索,而不是之前的词的级别,大大提升检索效率,这也是潜在语义索引最大的好处在。

image.png

相关文章
|
搜索推荐
|
C++ 容器
C++学习笔记_15 线性容器-vector容器 2021-05-12
C++学习笔记_15 线性容器-vector容器 2021-05-12
学习笔记: 线性代数-向量的定义
线性代数个人学习笔记
190 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
146 0
C++菜鸟学习笔记系列(8)——标准库类型vector
|
机器学习/深度学习 算法 搜索推荐
高维向量检索的设计与实践(一)|学习笔记
快速学习高维向量检索的设计与实践(一)
289 0
高维向量检索的设计与实践(一)|学习笔记