矩阵向量中两两间欧式距离计算[通俗易懂]

矩阵向量中两两间欧式距离计算[通俗易懂]目标:希望通过的矩阵运算就能得出矩阵向量中两两之间的欧式距离欧氏距离公式:一般而言,我们常见的欧式距离计算公式如下:a,b对应的是两组不同的向量dist(a,b)=(a1−b1)2+(a2−b2)2+⋅⋅⋅(an−bn)2dist(a,b)=\sqrt{(a_1-b_1)^{2}+(a_2-b_2)^{2}+···(a_n-b_n)^{2}}dist(a,b)=(a1​−b1​)2…

大家好,又见面了,我是你们的朋友全栈君。

目标:希望通过的矩阵运算就能得出矩阵向量中两两之间的欧式距离

欧氏距离公式:

  • 一般而言,我们常见的欧式距离计算公式如下:

    • a,b 对应的是两组不同的向量
    • d i s t ( a , b ) = ( a 1 − b 1 ) 2 + ( a 2 − b 2 ) 2 + ⋅ ⋅ ⋅ ( a n − b n ) 2 dist(a,b)=\sqrt{(a_1-b_1)^{2}+(a_2-b_2)^{2}+···(a_n-b_n)^{2}} dist(a,b)=(a1b1)2+(a2b2)2+(anbn)2
  • 事实上对于上面的公式如果我们通过向量的角度来考虑,就会变成是下列形式:

    • a,b 对应的是两组不同的向量
    • d i s t ( a , b ) = d o t ( a , a ) − 2 ∗ d o t ( a , b ) + d o t ( b , b ) dist(a,b) = \sqrt{dot(a,a)-2*dot(a,b)+dot(b,b)} dist(a,b)=dot(a,a)2dot(a,b)+dot(b,b)

假设有下列矩阵 A A A:

  • A = [ a 1 a 2 a 3 b 1 b 2 b 3 ] {A}= \left[{\begin{array}{}{a{_1}}&{a{_2}}&{a{_3}}\\{b{_1}}&{b{_2}}&{b{_3}}\end{array}}\right] A=[a1b1a2b2a3b3]

  • 为了凑出上面的公式:

    • 先计算出 d o t ( A , A ) dot(A,A) dot(A,A) -> A A T {AA^T} AAT

      • A ‾ = [ a 1 a 2 a 3 b 1 b 2 b 3 ] [ a 1 b 1 a 2 b 2 a 3 b 3 ] = [ ( a 1 ) 2 + ( a 1 ) 2 + ( a 1 ) 2 ( a 1 ) ( b 1 ) + ( a 2 ) ( b 2 ) + ( a 3 ) ( b 3 ) ( a 1 ) ( b 1 ) + ( a 2 ) ( b 2 ) + ( a 3 ) ( b 3 ) ( b 1 ) 2 + ( b 2 ) 2 + ( b 3 ) 2 ] \overline{A} = \left[{\begin{array}{}{a{_1}}&{a{_2}}&{a{_3}}\\{b{_1}}&{b{_2}}&{b{_3}}\end{array}}\right] \left[{\begin{array}{}{a{_1}}&{b{_1}} \\ {a{_2}}&{b{_2}} \\ {a{_3}}&{b{_3}} \end{array}}\right] = \left[{\begin{array}{}{(a{_1})^2+(a{_1})^2+(a{_1})^2}&{(a{_1})(b{_1})+(a{_2})(b{_2})+(a{_3})(b{_3})} \\{(a{_1})(b{_1})+(a{_2})(b{_2})+(a{_3})(b{_3})} & {(b{_1})^2+(b{_2})^2+(b{_3})^2} \end{array}}\right] A=[a1b1a2b2a3b3]a1a2a3b1b2b3=[(a1)2+(a1)2+(a1)2(a1)(b1)+(a2)(b2)+(a3)(b3)(a1)(b1)+(a2)(b2)+(a3)(b3)(b1)2+(b2)2+(b3)2]
    • A ‾ \overline{A} A对角线:

      • A ‾ . d i a g ( ) \overline{A}.diag() A.diag() = [ ( a 1 ) 2 + ( a 2 ) 2 + ( a 3 ) 2 ( b 1 ) 2 + ( b 2 ) 2 + ( b 3 ) 2 ] \left[{\begin{array}{}{(a{_1})^2+(a{_2})^2+(a{_3})^2} & {(b{_1})^2+(b{_2})^2+(b{_3})^2}\end{array}}\right] [(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2]
    • 对对角线矩阵进行一些变换

      • A ‾ 1 \overline{A}{_1} A1 = [ ( a 1 ) 2 + ( a 2 ) 2 + ( a 3 ) 2 ( b 1 ) 2 + ( b 2 ) 2 + ( b 3 ) 2 ] T \left[{\begin{array}{}{(a{_1})^2+(a{_2})^2+(a{_3})^2} & {(b{_1})^2+(b{_2})^2+(b{_3})^2}\end{array}}\right]^T [(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2]T [ 1 1 ] \left[{\begin{array}{}1 & 1\end{array}}\right] [11]
      • = [ ( a 1 ) 2 + ( a 2 ) 2 + ( a 3 ) 2 ( a 1 ) 2 + ( a 2 ) 2 + ( a 3 ) 2 ( b 1 ) 2 + ( b 2 ) 2 + ( b 3 ) 2 ( b 1 ) 2 + ( b 2 ) 2 + ( b 3 ) 2 ] \left[{\begin{array}{}{(a{_1})^2+(a{_2})^2+(a{_3})^2} & {(a{_1})^2+(a{_2})^2+(a{_3})^2} \\ {(b{_1})^2+(b{_2})^2+(b{_3})^2} & {(b{_1})^2+(b{_2})^2+(b{_3})^2} \end{array}}\right] [(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2]
      • A ‾ 2 \overline{A}{_2} A2 = [ 1 1 ] T \left[{\begin{array}{}1 & 1\end{array}}\right]^T [11]T [ ( a 1 ) 2 + ( a 2 ) 2 + ( a 3 ) 2 ( b 1 ) 2 + ( b 2 ) 2 + ( b 3 ) 2 ] \left[{\begin{array}{}{(a{_1})^2+(a{_2})^2+(a{_3})^2} & {(b{_1})^2+(b{_2})^2+(b{_3})^2}\end{array}}\right] [(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2]
      • = [ ( a 1 ) 2 + ( a 2 ) 2 + ( a 3 ) 2 ( b 1 ) 2 + ( b 2 ) 2 + ( b 3 ) 2 ( a 1 ) 2 + ( a 2 ) 2 + ( a 3 ) 2 ( b 1 ) 2 + ( b 2 ) 2 + ( b 3 ) 2 ] \left[{\begin{array}{}{(a{_1})^2+(a{_2})^2+(a{_3})^2} & {(b{_1})^2+(b{_2})^2+(b{_3})^2} \\ {(a{_1})^2+(a{_2})^2+(a{_3})^2} & {(b{_1})^2+(b{_2})^2+(b{_3})^2} \end{array}}\right] [(a1)2+(a2)2+(a3)2(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2(b1)2+(b2)2+(b3)2]
    • 经过了上面的处理,我们就可以得出上述的公式了

      • d i s t ( A ) = A ‾ 1 + A ‾ 2 − 2 A ‾ dist(A) = {\overline{A}{_1}} + {\overline{A}{_2}} – {\overline{2A}} dist(A)=A1+A22A
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150907.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Log4j中conversionPattern的含义「建议收藏」

    Log4j中conversionPattern的含义「建议收藏」%a–表示礼拜几,英文缩写形式,比如“Fri”%A–表示礼拜几,比如“Friday”%b–表示几月份,英文缩写形式,比如“Oct”%B–表示几月份,“October”%c–

    2022年7月2日
    27
  • idea2022.01.13激活码永久[最新免费获取]2022.02.05

    (idea2022.01.13激活码永久)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html76VF8VOVJM-eyJsaWNlbnNlSW…

    2022年4月1日
    104
  • matlab极性电容叫什么,什么是无极性电容[通俗易懂]

    描述无极电容就是没有极性电源正负极的电容器,无极性电容器的两个电极可以在电路中随意的接入。因为这款电容不存在漏电的现象,主要应用在耦合,退耦,反馈,补偿,振荡等电路中。图为无极性电容参考图。无极电容就是没有极性电源正负极的电容器,无极性电容器的两个电极可以在电路中随意的接入。因为这款电容不存在漏电的现象,主要应用在耦合,退耦,反馈,补偿,振荡等电路中。无极性电容两电极无正负极性之分,主要用于交流电…

    2022年4月12日
    51
  • eclipse经常卡死的解决方法总结_eclipse运行一段时间后死机

    eclipse经常卡死的解决方法总结_eclipse运行一段时间后死机使用eclipse3.6版本时,每当用alt+/或.来自动补全代码时,eclipse经常会卡死。这是eclipse3.6版本的一个bug,网上有朋友直接选择打补丁,也有人配置eclipse的Contentassist延时加长来解决这个问题。既然是版本问题,还是直接治标好了,升级新版本的eclipse解决这个问题:Help->checkforupdates选择要更新的组件

    2022年10月10日
    5
  • python udp发送数据(http视频传输)

    一、前言最近想写一个实时的视频传输程序,然后上网找了很久没有找到合适的我想用OpenCV进行图像采集,然后用pygame将视频信号转化为可通过UDP网络传输的字符流,然后到达终端后再通过pygame对字符流进行解析,进而将图像显示出来之所以使用UDP传输而不是TCP传输,是因为UDP在视频传输方面拥有快速、无需连接等优点,适合密集传送大量信息的场合但UDP传输有一个问题,…

    2022年4月13日
    174
  • apply方法 python_python min函数

    apply方法 python_python min函数Pythonapply函数的用法发布于2014-08-0721:02:24|674次阅读|评论:0|来源:网友投递Python编程语言Python是一种面向对象、解释型计算机程序设计语言,由GuidovanRossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各…

    2025年7月12日
    4

发表回复

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

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