我们在初中就应该学过投影,那么什么是投影呢?形象点说,就是将你需要投影的东西上的每一点向你要投影的平面作垂线,垂线与平面的交点的集合就是你的投影。注意这里我们的投影是向量的投影,几何的投影(并不一定是垂直投影的)可见度娘百科。同样的,我们从简单的二维投影来开始讨论。
二维投影
上图表示的是,向量b在向量a上的投影为p。显然有如下表达式:
e=b−p=b−xaaTe=0→aT(b−xa)=0→xaTa=aTb→x=aTbaTap=ax=aaTbaTaPb=p→P=aaTaTa其中,P为投影矩阵,由P的表达式可以看出,它具有如下性质:
PT=P,P2=P三维投影
三维投影,就是将一个向量投影到一个平面上。同上面一样,假设b向量在平面上的投影为p,则有表达式:
e=b−pe是垂直于平面的向量。由于p向量在平面上,则p向量可以由该平面的2个线性无关向量(正如,在xy平面的任何向量都可以由x轴,y轴表示)表示:
p=x1a1+x2a2=AxA=[a1a2]x=[x1x2]T由于e垂直于平面,则e向量垂直于平面中的任意向量,则有:
{e=b−p=b−AxaT1(b−Ax)=0aT2(b−Ax)=0→[aT1aT2][b−Ax]=0→AT(b−Ax)=0将上式化简求得x:
ATAx=ATb→x=(ATA)−1ATb又因为p=Ax, Pb=p,则得到投影矩阵为:
P=A(ATA)−1AT由P的表达式可以看出,它具有如下性质:
PT=P,P2=P上面的投影矩阵是通式,当投影在一维情况时,A即为直线上的任意一个向量a,投影矩阵为:
P=A(ATA)−1AT=a(aTa)−1aT=aaTaTa注意:一个数值的逆是它的倒数。
举例说明
下面以一个实例来说明:
如上图,假设我们要将向量b投影到水平面上,其投影为p,a1, a2为水平面的两个线性无关向量,它们的参数分别为:
b=[111],a1=[100],a2=[010]那么A=[a1a2]即:
A=[100100]由上面我们求得的通式,可得投影矩阵P:
P=A(ATA)−1AT=[100010000]知道投影矩阵P后,我们可以得到b在水平面上的投影p为:
p=Pb=[100010000][111]=[110]显然,p与我们图中所示的结果相同。这里我们是以三维情况进行举例的,更高维情况,我们无法用图像来描述,但是通式也是成立的。
三维图的matlab程序如下:
1 | clear all |