点在直线的投影坐标 n维向量投影坐标 几何投影坐标

点在直线的投影坐标 n维向量投影坐标 几何投影坐标点在直线的投影坐标n维向量投影坐标几何投影坐标一、点在直线的投影坐标如下图所示,直线l1:y=kx+b,直线外有一点P(x0,y0),问:点P在直线上的投影坐标为多少呢?求点P的投影坐标,即是求过点P(x0,y0)的直线l2垂直于直

大家好,欢迎来到IT知识分享网。

点在直线的投影坐标  n维向量投影坐标 几何投影坐标

转载请注明出处】http://blog.csdn.net/guyuealian/article/details/53954005

一、点在直线的投影坐标

    如下图所示,直线l1y=kx+b直线外有一点P(x0, y0),问:点P在直线上的投影坐标为多少呢?  

点在直线的投影坐标 n维向量投影坐标 几何投影坐标

   求点P的投影坐标,即是求过点P(x0, y0)的直线l2垂直于直线l1的交点M。由于两条直线相互垂直,则有:k1k2=-1,设P点的直线l2为:y-y0=-k-1(x-x0),两条直线的交点为M(x1, y1),那么点P在直线l1的投影为:

点在直线的投影坐标 n维向量投影坐标 几何投影坐标

      以下是Matlab求点P在直线y=kx+b的投影坐标:

clc;clear all;
p=[4 4];         %点p
k=2;             %直线斜率
b=1;
X=[0:0.1:10]; Y=k*X+b;   %y=kx+b的直线
%% 计算投影点M(x1,y1)
x1=(k*(p(2)-b)+p(1))/(k*k+1);
y1=k*x1+b;
M=[x1 y1]               %点P往直线y=kx+b投影后的坐标
%% 绘图
figure();
hold on;axis equal     %等比例显示
axis([0 10 0 10])
plot(X,Y,'g');         %绘制y=kx+b的直线
plot(p(1),p(2),'*k');
plot(M(1),M(2),'xr');
title('点往直线投影');
xlabel('X')
ylabel('Y')
grid on

点在直线的投影坐标 n维向量投影坐标 几何投影坐标


二、
点在某方向上的投影坐标

      如下图所示,设有两条向量
w1
=[1 2]

w2
=[3 4],问w2w1的投影坐标为多少?
点在直线的投影坐标 n维向量投影坐标 几何投影坐标
      这种问题,有两种解法:
(1)几何投影法:是将问题
转为
点在直线的投影坐标”,w1的直线斜率为k=2,所以w1直线可表示为y=kx,向量w2即为点P=(3,4),即用下列公式,直接求解即可:
点在直线的投影坐标 n维向量投影坐标 几何投影坐标
    解得投影点M=(2.2, 4.4)
    
这种方法,简单也易于理解,不过也繁琐,下面用线性代数几何应用的方法

(2)向量投影法:将问题转为向量w2在向量w1方向的投影”(这是我做Fisher线性判别,样本投影到直线时,总结出来的,应该没错吧

点在直线的投影坐标 n维向量投影坐标 几何投影坐标

       思路:u表示w1方向的单位向量(即上图中的绿色剪头u也是w1归一化后的单位向量),向量w2在向量w1方向的投影坐标,即为向量OM,由几何知识得:

点在直线的投影坐标 n维向量投影坐标 几何投影坐标

     上式中,u是向量w1单位向量,即

点在直线的投影坐标 n维向量投影坐标 几何投影坐标

     利用上式,可以得到向量w2在向量w1方向的投影坐标,即点P=(3,4)在直线w1的投影坐标为:

点在直线的投影坐标 n维向量投影坐标 几何投影坐标

     对于Matlab强大的矩阵运算来说,这种运算再适合不过了!!!!!!

(3)推广到d维投影的情况:设有n×d的坐标矩阵A(矩阵A中,共有n行,每行为一个向量,每个向量是d维),坐标矩阵A往某一方向w投影时,其投影坐标矩阵M为:

点在直线的投影坐标 n维向量投影坐标 几何投影坐标

     例如:坐标矩阵A=[ 1 4;2 7;4 5;4 2;3 2;5 6],这是6×2的坐标矩阵,其投影坐标如图所示:

点在直线的投影坐标 n维向量投影坐标 几何投影坐标

clc;clear all;
%p=[2 6];                             %矩阵点p
A=[ 1 4;2 7;4 5;4 2;3 2;5 6];
k=2;                                  %直线斜率
X=[0:0.1:10];
Y=k*X;                                %y=kx的直线
wk=[1 k];                             %投影的直线方向
wk=wk/sqrt(sum(wk.^2));               %归一化,变为模为1的单位矢量wk
wd= A*wk'*wk;
figure
hold on;
axis equal %等比例显示
axis([0 10 0 10])
plot(A(:,1),A(:,2),'*b');
plot(X,Y,'k');
plot(wd(:,1),wd(:,2),'xr');
xlabel('X1')
ylabel('X2')
grid on

(4)特别说明

    向量投影法只适用于“过原点”的直线投影情况,即点往直线为y=kx投影,对于不过原点的直线y=kx+b,最好还是用几何投影的方法吧,只不过多维的情况,几何方法就问题大了。 
    这种向量投影法,是鄙人在做模式识别—-计算Fisher线性判别时,经常需要将大量的样本点投影到某个方向上,而采用传统的几何投影方法,特别对于多维的情况,过程十分繁杂。后面推论出向量投影方法,问题就好解决了,该方法对于Matlab
强大的
矩阵运算来说,是非常好的,希望对大家有用,娃哈哈~!
 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/12718.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信