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

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

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

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

一、点在直线的投影坐标

    如下图所示,直线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://javaforall.net/208719.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午10:55
下一篇 2026年3月19日 上午10:55


相关推荐

  • Java并发篇:volatile关键字吐血整理「建议收藏」

    Java并发篇:volatile关键字吐血整理「建议收藏」1.1主内存与工作内存在上一篇文章中我们已经知道线程是通过主内存去进行线程间的隐式通信的,而线程对共享变量的写操作在工作内存中完成,由JMM控制共享变量由工作内存写回到主内存的时机。JMM提供了一个保证内存可见性的原则:happens-before原则。这个原则可以保证线程对共享变量的写操作对其它线程可见。如果在多线程环境下需要满足happens-before原则,就…

    2022年7月7日
    33
  • linux编译so库「建议收藏」

    linux编译so库「建议收藏」一、动态库so的编译以一个例子来说明。这里有三个so_test.h,test_a.c,test_b.c#ifndef_SO_TEST_H_#define_SO_TEST_H_voidtest_a();voidtest_b();voidtest_c();#endif /*_SO_TEST_H_*/#include#include”so_test.h”

    2022年6月29日
    60
  • 数据库的or语句_oracle数据库常用sql语句

    数据库的or语句_oracle数据库常用sql语句一、ORACLE的启动和关闭1、在单机环境下要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下su-oraclea、启动ORACLE系统oracle>svrmgrlSVRMGR>connectinternalSVRMGR>startupSVRMGR>quitb、关闭ORACLE系统oracle>svrmgrlSVRMGR&g…

    2025年6月7日
    8
  • 基于android餐馆点餐系统报告感想,基于Android的餐厅点餐系统的设计与实现

    基于android餐馆点餐系统报告感想,基于Android的餐厅点餐系统的设计与实现摘要:民以食为天,在日常的生活中,我们经常需要与家人,朋友,同事在一起就餐以便促进相互之间的感情.但是现在多数的餐厅企业基本上还是手工点餐操作,无法更好地适应新时期下人们对餐饮业服务的人性化和高效率的要求.随着”互联网+”思维的不断推广,使得传统行业和互联网行业相结合的新兴产业也不断迅速发展.在当前社会形势下安卓系统得到了迅速发展和广泛应用,它正在悄无声息的改变着人们的生活,也为餐厅点餐信息化技术…

    2022年6月19日
    26
  • 百度发布文心大模型4.5,开启多模态智能新时代

    百度发布文心大模型4.5,开启多模态智能新时代

    2026年3月12日
    2
  • 新人学习EJB!ejb到底是什么?[通俗易懂]

    1. 我们不禁要问,什么是”服务集群”?什么是”企业级开发”? 既然说了EJB是为了”服务集群”和”企业级开发”,那么,总得说说什么是所谓的”服务集群”和”企业级开发”吧!这个问题其实挺关键的,因为J2EE中并没有说明白,也没有具体的指标或者事例告诉广大程序员什么时候用EJB什么时候不用。于是大家都产生一些联想,认为EJB”分布式运算”指得是”负载均衡”提高系统的运行效率

    2022年4月5日
    251

发表回复

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

关注全栈程序员社区公众号