精华内容
下载资源
问答
  • Matlab标准化(单位化)一个向量

    万次阅读 2018-08-09 16:48:08
    输入:(例) p = [0.1501, 0, 1e-05] v = p/norm(p) 输出: v =1.0000 0 0.0001  

    输入:(例)

    p = [0.1501, 0, 1e-05]

    v = p/norm(p)

    输出:

    v =1.0000         0    0.0001

     

    展开全文
  • 或者它可以将其作为 [1x3] 向量的组合: fcn_plotUnitVectors(origin[1x3], csX[1x3], csY[1x3], csZ[1x3], vectorScale[1x1],colorSel) colorSel 也可以是用于格式化向量的字符串。 默认颜色是单元 1 - 红色,...
  • 向量单位化是指,将...下面对各种列向量单位化MATLAB代码进行比较。MATLAB版本为R2019a,CPU为Intel i7 8700.一、两层for循环先试试最笨的两层for循环。逻辑很接近C的语言逻辑,很容易理解。function 10000×1...

    向量的单位化是指,将向量的每个元素除以向量的模(2-范数),使得向量的模(2-范数)变为1.

    在机器学习、压缩感知、稀疏表现等方面,经常需要对矩阵的每个列向量进行单位化。下面对各种列向量单位化的MATLAB代码进行比较。MATLAB版本为R2019a,CPU为Intel i7 8700.

    一、两层for循环

    先试试最笨的两层for循环。逻辑很接近C的语言逻辑,很容易理解。

    function 

    10000×10000的矩阵列向量单位化,两层for循环仅耗时0.5877秒。比我想象的快的多,MATLAB for循环速度慢在新版MATLAB面前就是个笑话。

    二、for循环+sum函数

    function 

    单层for循环+sum函数,居然耗时0.6027秒,比两层for循环还慢,令人震惊!看来MATLAB对for循环的优化已经到了令人发指的地步。

    三、for循环+norm函数

    norm函数是built-in函数,用于求矩阵、向量的范数,默认是2-范数。注意,矩阵范数与矩阵列向量的范数不是一个概念。

    function 

    单层for循环+sum函数,耗时0.5496秒,优于两层for循环。

    四、向量化(右乘对角矩阵)

    采用右乘一个对角矩阵的方式对矩阵进行缩放,常见的列向量单位化操作。

    function 

    耗时7.9222秒!!!彻底翻车,大量的时间花费在分配内存生成10000×10000的对角矩阵上,效率低的令人发指!

    五、bsxfun + sum函数

    虽然Compatible Array Sizes功能已经取代了bsxfun函数,但我仍然喜欢写成bsxfun的形式。

    function 

    耗时0.3529秒。bsxfun一如既往的给力。

    六、bsxfun + arrayfun(for)

    arrayfun本质上还是for循环,只不过形式更加简洁。

    function 

    耗时0.2949秒!效果非常好。

    七、bsxfun + vecnorm

    MATLAB 有自带的对矩阵列向量求范数的built-in函数,vecnorm,试一下运行效率如何。(这个函数我也是写文章时才发现的)

    function 

    耗时仅0.1565秒! Amazing

    七、不同大小的矩阵测试

    function 

    测试表明,当矩阵

    维度,M,N<100时,上述6种方法的耗时差别不大,相比之下,双层for循环(fun1)与向量化-右乘对角矩阵(fun4)的速度稍快一些。M>100时,bsxfun+vecnorm函数(fun7)速度最快。

    结论:对于小规模矩阵,向量化(fun4)速度最快,理解起来也很方便;中等或大规模矩阵,bsxfun+vecnorm函数(fun7)速度最快.

    易夕:MATLAB Tricks 专栏目录​zhuanlan.zhihu.com
    展开全文
  • matlab-线性代数 向量单位化

    千次阅读 2019-02-21 23:03:00
    matlab : R2018a 64bit      OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   code clear clc a=[1 1 0]; b=norm...

         matlab : R2018a 64bit
          OS : Windows 10 x64
    typesetting : Markdown
           blog : my.oschina.net/zhichengjiu
          gitee : gitee.com/zhichengjiu

    code

    clear
    clc
    
    a=[1 1 0];
     
    b=norm(a);  % 模
     
    c=a/b
    
    

    result

    
    c =
    
        0.7071    0.7071         0
    
    >> 
    

    resource

    • [文档] ww2.mathworks.cn/help/matlab
    • [文档] ww2.mathworks.cn/help/simulink
    • [平台] www.oschina.net
    • [平台] gitee.com


    感谢帮助 志成就 的人们。
    matlab优秀,值得学习。基础知识 + 专业知识 + matlab = ?
    Simulink,用于仿真和基于模型的设计,值得学习。
    该博文仅可用于测试与参考。

    转载于:https://my.oschina.net/zhichengjiu/blog/3013319

    展开全文
  • schmidt正交化matlab程序

    2015-10-20 21:54:44
    施密特正交化matlab程序,将矩阵的列向量进行施密特规范正交
  • 单位向量映射到 RGB 立方体上相应的 RGB 颜色。 用于将 3D 点云或网格数据上的法线向量可视化为颜色,而不是有时很难看到箭头方向的 quiver3。
  • 向量法是解高中立体几何题的神器。只要能建立空间直角坐标系的题,都可以用向量法来解,而这样的题目可以占到所有立体几何题的 95% 以上。与传统方法相比,向量法的计算量稍微大一些,但它的优点是不需要费脑筋做...

    98f87c0c3868487a6d05060d7253016a.png

      向量法是解高中立体几何题的神器。只要能建立空间直角坐标系的题,都可以用向量法来解,而这样的题目可以占到所有立体几何题的 95% 以上。与传统方法相比,向量法的计算量稍微大一些,但它的优点是不需要费脑筋做辅助线,而只需要简单粗暴地按套路进行计算,所以尤其适用于复杂的问题。

      向量法的完整套路中,包含一种名为「叉积」的运算,它在部分地区是超出教学大纲的。但是没有「叉积」的向量法在很多情况下发挥不出它的魔力。本文就来把「叉积」这个缺口补上,让大家领略一下向量法的简单、粗暴、有效。当然啦,我知道你们会有「考试时不让用叉积」的抱怨。没关系,我会教你怎样把叉积「伪装」成不超纲的内容。

      本文的第一部分将介绍向量间的点积、叉积两种运算,包括它们的定义、计算公式、运算律,以及向量法中直线和平面的方向的表示方法。高中立体几何题的大部分问题都是求角或求距离,本文的第二、三部分就来介绍各种角和距离用向量法怎么求。证明题一般是要证明线、面之间的平行或垂直,或者两个角的大小、两条线段的长度相等,都可以化归成求角或求距离。在第四部分,我会讲一下叉积在求面积、求体积这两种相对罕见的题型中的用法。最后展示一道例题。

    一、基础知识

     1.1 向量的点积运算

      向量的点积是大纲之内的内容。设两个向量为

    ,它们的夹角为
    的点积记作
    ,读作「a 点乘 b」,或干脆读作「a 点 b」(「点」字常常儿化)。
    是一个数,它等于
    各自的模之积再乘以夹角的余弦:
    。当
    垂直时,

      点积运算适用于任何维度的向量,不过本文只讨论三维情况。在空间直角坐标系中,设

    的坐标为
    ,则
    可用这些坐标表达为

      向量的点积具有交换律和分配律:

      • 交换律:
      • 分配律:

    但没有结合律,因为两个向量的点积是一个数,不能再与第三个向量进行点积运算。

     1.2 向量的叉积运算

      向量的叉积是本文要介绍的重点。叉积仅对三维向量有定义。设两个三维向量为

    ,它们的夹角为
    的叉积记作
    ,读作「a 叉乘 b」,或干脆读作「a 叉 b」(「叉」字也可以儿化)。
    是一个
    向量,它具有以下性质:
      1. 它的模等于
        各自的模之积再乘以夹角的正弦,即
      2. 它的方向与
        都垂直,且满足
        右手定则,如下图所示。

    ba81a82c5b27734aac4de2f7e721f9ca.png

      右手定则有两种理解方式,如下图。一种是:伸出拇指和食指,让它们分别朝向

    的方向,然后伸出中指让它与手掌垂直,则中指的方向就是
    的方向。另一种是:让四指从
    的方向弯向
    的方向,并伸出拇指,则拇指的方向就是
    的方向。

    c79e9fcbaa70ae72c2ce4f13b5725d25.png

    平行时,
    (注意结果是
    零向量)。
      在空间直角坐标系中,设
    的坐标为
    ,则
    可用这些坐标表达为
    。这个公式可以用交叉相乘法来记忆:

    5eb1a7ffa13cdd360db86e4d91397ae2.png

    注意,左、右两个交叉相乘是「捺减撇」,中间的交叉相乘是「撇减捺」。

      向量的叉积具有反交换律和分配律:

      • 反交换律:
      • 分配律:

    两个向量的叉积是一个向量,可以继续与第三个向量进行叉积运算,但不幸的是,叉积运算也不满足结合律,即没有

     1.3 直线与平面方向的表示

      在能建立空间直角坐标系的题目中,提到一条直线,一定会已知直线上两点

    的坐标。两个坐标的差就是直线的方向向量
    ,它可以表示直线的方向,在求角和求距离时都很有用。

      而平面的方向,则是用与平面垂直的向量来表示的,这个向量称为「法向量」。提到一个平面,一定会已知平面上不共线的三点

    的坐标,由此可以得到两个向量
    。这两个向量的叉积就是平面的法向量。根据需要,可以选择
    作为平面的法向量,这两个法向量大小相同,方向相反。

    031eba407d05f1caff924ee6886c68f6.png

      在立体几何题中,叉积的主要用途就是求平面的法向量。如果考试时不允许在步骤中使用叉积运算,可以用如下方法绕过去:既然法向量就是与平面中两个已知向量都垂直的向量,那么可以设出法向量

    的坐标
    ,并利用
    都垂直来列出两个方程。设
    的坐标分别为
    ,则两个垂直可以用点积表示为:

    在试卷上列出这个方程组后,不必真正去解它,而是在草稿纸上根据

    ,利用交叉相乘法算出法向量坐标,直接把结果写到试卷上。但这种「伪装」具有一定的局限性——方程组只能解出法向量的方向,不能解出它的模,所以遇到需要使用叉积的模的场合,就绕不过去了。

    二、用向量法求各种角

      高中立体几何涉及的角度有:线线角、线面角、面面角。

     2.1 求两条直线的夹角

      设两条直线的方向向量分别为

    ,它们的夹角为
    。两条直线的夹角,就是
    中较小的那个,它的余弦一定是非负的。由点积定义
    可得两个方向向量的夹角为
    ,于是两条直线的夹角就是

    ef7123e7810cb79d0be9eecc7a89a662.png

      有同学要问了:上面的方法利用的是点积,那么利用叉积求得两条直线的夹角为

    行不行呢?答案是:行,但是
    叉积的计算量比点积大,所以优先选择点积。

      注意向量法并不要求两条直线共面,它同样适用于异面直线!这就避免了传统方法中作平行线的麻烦。

     2.2 求直线与平面的夹角

      设直线的方向向量为

    ,平面的法向量为
    ,两个向量的夹角为
    。容易看出,待求的线面角
    中较小者的余角,
    。由点积定义,
    ,于是有
    。与 2.1 节相同,我们优先选择计算量小的点积运算,而不是叉积。

    969eca402270256400990ccd9f5ddcad.png

      请再次领略向量法的简单粗暴有效:传统方法中,要求线面角,必须找到直线与平面的交点,并作出直线在平面内的投影。而在向量法中,只要知道直线上的任意两点和平面中任意三点(不共线)的坐标,就可以代入公式计算出直线的方向向量和平面的法向量,再代入公式计算夹角,完全不必考虑五个已知点的位置关系。

     2.3 求两个平面的夹角

      设两个平面的法向量分别为

    ,它们的夹角为
    。两个平面的夹角,就是
    中较小的那个。用与 2.1 节相同的方法,可以得到两个平面的夹角为

    c939ad4340f5a989f802aa6744ab68b5.png

      在几何题中,提到「二面角」,往往指的不是两个「平面」的夹角,而是两个「半平面」的夹角——也就是说,求的是

    中特定的某一个。怎么知道是哪一个呢?还记得在求法向量的时候,可以人为选择箭头指向哪一头吗?只要让两个法向量
    一个指向角外,一个指向角内(如上图),那么两个半平面构成的二面角
    ,就一定是两个法向量的夹角
    (注意分子上没有绝对值),而不是它的补角了。反之,如果两个法向量都指向角内或都指向角外,那么二面角
    就是法向量夹角
    的补角

      用向量法求二面角,同样不需要找到两个面的交线和它在两个面内的垂线,而只需要知道两个面内六个点的坐标。在很多情况下,交线上会有两个已知点,那么就只需要在两个面中各再找一个点。

    三、用向量法求各种距离

      点、线、面三种图形两两组合,可以得到六种距离:两点距、点线距、点面距、线线距、线面距、面面距。其中线面距、面面距只在线面或面面平行时才有定义,此时可以在直线或其中一个平面中任取一点,转化为点面距。因此这一部分将介绍前四种距离的求法。

     3.1 求两点间的距离

      设两点的坐标分别为

    ,则它们的距离为

     3.2 求点到直线的距离

      如图,设直线上任意一点到已知点的向量为

    ,直线的方向向量为
    ,两个向量的夹角为
    。可以看出,点到直线的距离为
    。由叉积的定义,有
    ,所以点到直线的距离就是

    1717a7eb0ebb51d84bd3ca4d8f48276e.png

      这里为什么使用了计算量大的叉积,而不是点积呢?这是为了利用叉积定义中现成的

     3.3 求点到平面的距离

      如图,设平面上任意一点到已知点的向量为

    ,平面的法向量为
    ,两个向量的夹角为
    。可以看出,点到直线的距离为
    (余弦取绝对值是因为
    可能是钝角)。由点积的定义,有
    ,所以点到平面的距离就是

    ab50e05ca608b1a03424b37e7af40f70.png

      点到平面的距离,其实是向量

    在法向量
    上的投影长度,
    也正是投影长度公式。

     3.4 求两条直线的距离

      三维空间中直线有三种位置关系:相交、平行、异面。后两种情况都可以求距离,但方法不一样。若两条直线平行,则可在其中一条直线上任取一点,转化成求该点到另一条直线的距离。若两条直线异面,则可以按如下步骤求出它们的距离。设第一条直线上有两个已知点

    ,第二条直线上有两个已知点
    。首先,找一个向量与两条直线都垂直,这个向量可以是两条直线的方向向量的叉积
    。然后,任作一条连结两条直线的线段(比如
    ),将它投影到
    上,投影长度
    就是异面直线的距离。

    a9027d17853c3dd4649085987ca51abc.png

      我们看到,两条直线的位置关系不同时,它们的距离求法不一样。但向量法最有用的时候,正是图形的位置关系不清楚的时候。有没有简便的方法判断直线的位置关系呢?有!先不管三七二十一地计算「法向量」

    ,如果算出来发现是零向量,那么说明两条直线平行,转化成点线距。如果算出来法向量非零,那么就继续计算投影长度,如果投影长度为 0,说明两条直线相交,否则两条直线异面,投影长度是它们之间的距离。

    四、用向量法求三角形面积和四面体体积

      这两种题型在高中立体几何中出现的频率不高,但它们与高等数学中「行列式」的概念联系紧密,有兴趣的同学可以涉猎一下。

     4.1 求三角形的面积

      设三角形三个顶点

    的坐标均已知,则三角形的面积为
    。而由叉积的定义,
    ,所以

      这个公式同样适用于平面几何,此时

    坐标均为 0。设
    ,则
    。这个向量的
    坐标的绝对值的一半就是三角形
    的面积,而
    坐标的绝对值是以
    为邻边的平行四边形的面积。
    坐标的正负号,表示在平面中从
    是逆时针还是顺时针旋转,因此
    坐标也称为平行四边形的
    有向面积

      把

    的二维坐标排成两行两列
    ,这个东西称为「行列式」,它的值是一个数。二阶行列式的计算公式是「交叉相减」:
    。二阶行列式对应着平面中两个向量的叉积,其几何意义就是「平行四边形的有向面积」。

     4.2 求四面体的体积

    f75b74008b079689607e38e017332ff1.png

      设四面体四个顶点

    的坐标均已知。由 4.1 节,底面三角形
    的面积为
    ;而四面体的高是顶点
    到底面的距离,由 3.3 节,这个距离为
    。四面体的体积为

      上述结果去掉

    后剩下的部分
    ,是以
    为三边的平行六面体的体积。再去掉绝对值,剩下的部分称为向量
    混合积,它表示了平行六面体的 有向体积——若从角
    内部观察,向量
    呈逆时针排列,则体积为正,反之为负。

      设

    。容易验证,
    。这正是三阶行列式
    的计算公式。三阶行列式对应着三维空间中三个向量的混合积,其几何意义是「平行六面体的有向体积」。

      行列式的概念还可以推广到更高维的空间。从同一个点出发的

    维向量的坐标排成的
    阶行列式,代表了以这些向量为边的
    维「超平行体」的「有向超体积」。

    五、一道例题

    0b41856aee6f57794aa1754a071facf1.png

      图中是一座金字塔。它是一个正四棱锥,底面

    是一个边长 10 米的正方形,各个侧面都是正三角形。在底边
    的中点
    处竖立着一根高
    米的火把
      1. 求金字塔相邻侧面所成的二面角
      2. 求金字塔的棱
        所在直线与底边
        所在直线的距离。
      3. 求火苗
        到棱
        所在直线的距离。

    231aaa48de7bf24440d6e891f3be2b3f.png

    解:如上图建立空间直角坐标系,原点

    为底面中心。容易求得下列各点坐标:
    (单位均为米,下略)。金字塔的高未知,设顶点的坐标为
    。由于侧面都是等边三角形,
    ,解得

    求二面角

    侧面
    的一个法向量为
    ,不妨缩短成
    ,它指向二面角
    外部。侧面
    的一个法向量为
    ,不妨缩短成
    ,它指向二面角
    内部。二面角的大小就是法向量的夹角,即

    求直线

    的距离:
    先求一个与两条直线都垂直的向量
    ,不妨缩短成
    。将
    投影到这个向量上,投影长度为
    ,这就是直线
    的距离。

    求点

    到直线
    的距离:
    此距离
    ,代入得
    展开全文
  • 1.数据矩阵单位化方法一:[plain] view plain copy %%矩阵的列向量单位化%输出矩阵Y为单位化矩阵%方法即是矩阵中所有元素除以该元素所在列向量的二范数clc;clear;X=...
  • 上篇讲了向量的基本概念和简单的加减运算,这部分的数学运算与几何图形变换之间的联系是非常直观的,理解起来非常容易本篇讲的内容在数学运算与几何图形变换之间的联系不那么直观,需要花功夫反复琢磨运算的数学意义...
  • 下面展示一种在三维点云上可视向量的方法,将单位向量映射到RGB立方体上相应的RGB颜色。用于将三维点云或网格数据上的法向矢量可视化为彩色,而不是法向量箭头因为有时很难看清楚箭头的指向。 对于点云中的一个...
  • MATLAB —— 向量,矩阵,数组

    千次阅读 2019-01-26 20:33:45
    MATLAB —— 向量,矩阵,数组   目录 MATLAB —— 向量,矩阵,数组 一、向量 1、向量定义 2、引用向量元素 3、向量运算 二、矩阵 1、矩阵定义 2、引用矩阵 3、矩阵运算 三、数组   一、向量 1、...
  • matlab-向量的基本运算

    2021-07-30 09:27:08
    matlab-向量与矩阵 列向量column vectors: 用方括号括起来的一组分号分隔的数字 a=[1;2;3;4] a = 1 2 3 4 标量乘法: 用一个数字乘以一个列向量 c=3; b=c*a b = 3 6 9 12 行向量: 用一组...
  • MATLAB教程(1) MATLAB 基础知识

    万次阅读 多人点赞 2017-10-26 20:57:32
    去年看过一点点MATLAB,很久不用,遗忘惊人。为了加深自己的印象,扎实基础,现将官网上的基础教程做简单的翻译。 首先,以下从九个部分简单介绍基础入门知识。第一部分:MATLAB显示桌面的基本布局...
  • 二、Matlab中最基本的向量与矩阵运算知识 1、对向量的操作 1)向量的基本运算: 定义一个向量 创建一个列向量,元素与元素之间用分号(;)隔开,如 a = [2; 1; 4]; 创建一个行向量,元素与元素之间用空格(space)或者...
  • 施密特正交matlab程序,是HLLE中调用的一部分使用。
  • 此函数计算结构化自回归模型的系数矩阵,如下所示: L*x(n) = t + sum_{i=1}^KR(:,:,i)*x(ni) + w(n) n = [1,N];... 阿拉文德·克里希那穆提关于结构化向量自回归模型的系数矩阵计算,arXiv:1309.6290。
  • 求列向量组A的一个最大线性无关组可用命令rref(A)将A成行最简形,其中单位向量对应的列向量即为最大线性无关组所含向量,其它列向量的坐标即为其对应向量用最大线性无关组线性表示的系数。 01 — 例1 ...
  • 多维数组值传递、quiver3、quiver、plot3、plot等用法以及向量归一问题实例解析!
  • matlab向量和矩阵

    2020-03-19 15:59:16
    MATLAB 允许你创建列向量和行向量,列向量通过在方括号内把数值用分号(;)隔开来创建 >> a = [2; 1; 4] a = 2 1 4 要创建行向量,我们仍然是把一组数值用方括号括起来,不过这次使用的分隔符是空格或...
  • 给定(行矩阵)3-D非零向量,比例向量的长度为1。 除以范数后,传回缩放向量的座标。
  • 在直接数字域设计中,我们常常需要用到PID算法,而PID算法投入单片机使用时,往往需要硬件的支持,在调试时非常麻烦。本文通过Matlab仿真的手段实现PID,方便了开发者对系统的设计和实时调试。
  • MATLAB施密特正交

    千次阅读 2019-06-29 14:11:26
    a=input('所需要正交化向量构成的矩阵'); [lklkl,oioi]=size(a); for i=1:oioi if i==1 da=[a(:,i)/norm(a(:,i))]; end if i>=2%将第i个的所有施密特正交化系数写于矩阵b中alpha(i)除外 b=[]...
  • 简单粗暴理解支持向量机(SVM)及其MATLAB实例

    万次阅读 多人点赞 2018-09-28 17:49:36
    SVM的MATLAB实现:Libsvm 【实例】用SVM分类 【实例】用SVM回归 SVM概述 SVM已经是非常流行、大家都有所耳闻的技术了。网络上也有很多相关的博客,讲解得都非常详细。如果你要从零开始推导一个SVM,细致抠它全程...
  • 较为详细的MUSIC算法原理及MATLAB实现

    万次阅读 多人点赞 2019-09-11 10:58:54
    为方向响应向量, S S S 是入射信号, N N N 表示阵列噪声。 其中 φ k = 2 π d λ s i n θ k \varphi_k=\frac{2\pi d}{\lambda}sin\theta_k φ k ​ = λ 2 π d ​ s i n θ k ​ 有 A = [ a ( θ 1 ) , a ...
  • 实验1 Matlab 初步一、问题已知矩阵A 、B 、b 如下:??????????????????-------------=031948118763812654286174116470561091143A ??????????????????------=503642237253619129113281510551201187851697236421B []...
  • 斯密特正交(matlab)

    千次阅读 2018-06-06 19:07:26
    斯密特正交(matlab) 数学过程 伪代码如下: function b = Gram_Schmidt_Orthogonalization(a) [row,col]=size(a) b[1]=a[1] for i in 2~col for j in 1~i a[i]=a[i]-(b[j].T * a[i])/(b[j].T * b...
  • matlab norm向量和矩阵的范数

    千次阅读 2018-11-12 12:10:01
     向量的1范数即:向量的各个元素的绝对值之和,上述向量a的1范数结果就是:29,MATLAB代码实现为:norm(a,1); 1.2 向量的2范数  向量的2范数即:向量的每个元素的平方和再开平方根,上述a的2范数结果就是:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,566
精华内容 3,026
关键字:

matlab单位化向量

matlab 订阅