【线性代数】4-2:投影(Porjections)
title: 【线性代数】4-2:投影(Porjections)
categories:
- Mathematic
- Linear Algebra
keywords: - Projections
- Projection Onto a Subspace
toc: true
date: 2017-10-17 09:28:46
Abstract: 本篇主要介绍的就是向量的映射,以映射到直线为引导,重点在于映射到子空间。
Keywords: Projections,Projection Onto a Subspace
开篇废话
开篇废话,喜迎十九大,嚯嚯哈哈。
Projections
映射,投影,感觉怎么翻译都不太对,总能想到函数,不过好像在这部分,投影矩阵和函数的功能非常类似。在典型的三维正交基向量空间内,一个向量的投影到一个平面上一般是下面这种形式:

向量b投影到xy平面,和b投影到z轴的一种几何上的反应,当然超过三维,就没办法画出来的,但是原理都一样,通过垂直(正交),将不在子空间的向量转换到子空间内最接近原始向量 b⃗\vec{b}b 的投影向量 b⃗^\hat{\vec{b}}b^来近似原始向量,这种方法在最小二乘法中得到了完美的应用,以及后面将要做的一些分解,上一篇提到的split(分解到子空间的split),都可以利用projection的原理。
继续解读上图,向量被分级到了正交的两个子空间,xy平面,和z轴,这两个子空间互为orthogonal complements,并且满足下面两种关系:
p1⃗+p2⃗=b⃗P1+P2=I
\vec{p_1}+\vec{p_2}=\vec{b}\\
P_1+P_2=I
p1+p2=bP1+P2=I
第一个式子就是个典型的split,比如物理里面力的分解,速度分解,都是把向量分解到你想要的方向,然后我们把向量分解到orthogonal complements的子空间中,就得到了我们想要的projection
第二个式子是projection matrix之间的关系,这里可以轻易的看出来,映射到xy平面P1=[100010000]P_1=\begin{bmatrix}1&0&0\\0&1&0\\0&0&0\end{bmatrix}P1=⎣⎡100010000⎦⎤,同理到z轴的就是P2=[000000001]P_2=\begin{bmatrix}0&0&0\\0&0&0\\0&0&1\end{bmatrix}P2=⎣⎡000000001⎦⎤,可以看出P1+P2=IP_1+P_2=IP1+P2=I
。
Projection Onto a Line(映射到直线)
Dot product to Projections
把一个向量 b⃗\vec{b}b 映射到一条直线aaa,等价于问题类似于把一个向量projection到另一个向量上,这个和我们之前学习的dot product有点像,如果
when ∣i⃗∣=1b⃗⋅i⃗=∣b⃗∣∣i⃗∣cos(θ)=∣b⃗∣cos(θ)
when\,|\vec{i}|=1\\
\vec{b} \cdot \vec{i}=|\vec{b}||\vec{i}|cos(\theta)=|\vec{b}|cos(\theta)
when∣i∣=1b⋅i=∣b∣∣i∣cos(θ)=∣b∣cos(θ)
其中夹角就是下图中 θ\thetaθ

可以看到映射到向量a上等价于和a方向上的单位向量dot product,假设 p⃗\vec{p}p 是 b⃗\vec{b}b 的投影结果,那么 i⃗=a⃗∣a⃗∣\vec{i}=\frac{\vec{a}}{|\vec{a}|}i=∣a∣a
∣p⃗∣=∣b⃗∣cos(θ)=b⃗⋅i⃗=b⃗⋅a⃗∣a⃗∣p⃗=∣p⃗∣i⃗=∣p⃗∣a⃗∣a⃗∣so:p⃗=b⃗⋅a⃗∣a⃗∣∣a⃗∣a⃗
|\vec{p}|=|\vec{b}|cos(\theta)=\vec{b} \cdot \vec{i}=\vec{b} \cdot \frac{\vec{a}}{|\vec{a}|}\\
\vec{p}=|\vec{p}|\vec{i}=|\vec{p}|\frac{\vec{a}}{|\vec{a}|}\\
so:\\
\vec{p}=\frac{\vec{b}\cdot\vec{a}}{|\vec{a}||\vec{a}|}\vec{a}
∣p∣=∣b∣cos(θ)=b⋅i=b⋅∣a∣ap=∣p∣i=∣p∣∣a∣aso:p=∣a∣∣a∣b⋅aa
把向量中的dot product都换成转置相乘的模式就得到了
p⃗=b⃗Ta⃗a⃗Ta⃗a⃗
\vec{p}=\frac{\vec{b}^T\vec{a}}{\vec{a}^T \vec{a}}\vec{a}
p=aTabTaa
本文为节选,完整内容地址:https://www.face2ai.com/Math-Linear-Algebra-Chapter-4-2转载请标明出处
【线性代数】4-2:投影(Porjections)的更多相关文章
- MIT线性代数:16.投影矩阵和最小二乘
- Python爬取CSDN博客文章
0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.win ...
- MIT线性代数:15.子空间的投影
- 斯坦福大学CS224d基础1:线性代数回顾
转自 http://blog.csdn.net/han_xiaoyang/article/details/51629242 斯坦福大学CS224d基础1:线性代数知识 作者:Zico Kolter ( ...
- [OpenGL ES 03]3D变换:模型,视图,投影与Viewport
[OpenGL ES 03]3D变换:模型,视图,投影与Viewport 罗朝辉 (http://blog.csdn.net/kesalin) 本文遵循“署名-非商业用途-保持一致”创作公用协议 系列 ...
- 线性代数导论 | Linear Algebra 课程
搞统计的线性代数和概率论必须精通,最好要能锻炼出直觉,再学机器学习才会事半功倍. 线性代数只推荐Prof. Gilbert Strang的MIT课程,有视频,有教材,有习题,有考试,一套学下来基本就入 ...
- 【脚下生根】之深度探索安卓OpenGL投影矩阵
世界变化真快,前段时间windows开发技术热还在如火如荼,web技术就开始来势汹汹,正当web呈现欣欣向荣之际,安卓小机器人,咬过一口的苹果,winPhone开发平台又如闪电般划破了混沌的web世界 ...
- PCA算法详解——本质上就是投影后使得数据尽可能分散(方差最大),PCA可以被定义为数据在低维线性空间上的正交投影,这个线性空间被称为主⼦空间(principal subspace),使得投影数据的⽅差被最⼤化(Hotelling, 1933),即最大方差理论。
PCA PCA(Principal Component Analysis,主成分分析)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量 ...
- 三维投影总结:数学原理、投影几何、OpenGL教程、我的方法
如果要得到pose视图,除非有精密的测量方法,否则进行大量的样本采集时很耗时耗力的.可以采取一些取巧的方法,正如A Survey on Partial of 3d shapes,描述的,可以利用已得到 ...
随机推荐
- Photon Server初识(六) --- 客户端与服务端消息传递
前一章客户端与服务端连接成功,现在需要前后端进行数据传递. 一.前端发送消息.在项目Scripts目录中新建脚本 TestSer.cs.并挂载到相机上 二.客户端发送数据给服务端.编辑客户端代码 Te ...
- __formart__
__format__ 一.__format__ 自定制格式化字符串 date_dic = { 'ymd': '{0.year}:{0.month}:{0.day}', 'dmy': '{0.day}/ ...
- 【第二季】CH11_ ZYNQ软硬调试高级技巧
[第二季]CH11_ ZYNQ软硬调试高级技巧 软件和硬件的完美结合才是SOC的优势和长处,那么开发ZYNQ就需要掌握软件和硬件开发的调试技巧,这样才能同时分析软件或者硬件的运行情况,找到问题,最终解 ...
- 牛客 216 C 小K的疑惑
大意: 给定树, 求多少个三元组(i,j,k), 满足dis(i,j)=dis(j,k)=dis(k,i). 刚开始想复杂了, 暴力统计了所有的情况. #include <iostream> ...
- Redis 的订阅发布(PUB/SUB)示例
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("127.0.0.1"); ISubscriber sub ...
- 3、详解 ESLint 规则 转自https://blog.csdn.net/bbsyi/article/details/88816637
什么是 ESLint ? ESLint 是在 ECMAScript/JavaScript 代码中识别和报告模式匹配的工具,它的目标是保证代码的一致性和避免错误.在许多方面,它和 JSLint.JSHi ...
- 微信公众号支付备忘及填坑之路-java
一.背景 最近公司给第三方开发了一个公众号,其中最重要的功能是支付,由于是第一次开发,遇到的坑特别的多,截止我写博客时,支付已经完成,在这里我把遇到的坑记录一下(不涉及退款).不得不吐槽一下,腾讯这么 ...
- javaIO——AutoCloseable 小试
前面在 IO 概述篇提到过,AutoCloseable 接口类会自动调用 close() 方法,那究竟具体怎么写呢?以及发生异常情况下或者多个资源是不是都能自动调用呢?我们来写一个简单的类测试一下就知 ...
- windows连接远程服务器报错'SSH' 不是内部或外部命令,也不是可运行的程序 或批处理文件 解决方案
网上在windows下连接远程服务器的步骤如下: 1.打开cmd命令行窗口 2.输入cd ~/.ssh,进入c盘下的.ssh文件 3.输入“ssh root@远程服务器的ip地址”连接远程服务器, b ...
- Scala语言基础
1. Scala语言的特点 a. 多范式编程语言,面向对象(抽象.封装)和函数式(过程.结果)编程 b. 代码简洁 ==>可读性较差 c. 代码会被变异成Java字节码,运行在JVM上 2. S ...
