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

矩阵向量中两两间欧式距离计算[通俗易懂]目标:希望通过的矩阵运算就能得出矩阵向量中两两之间的欧式距离欧氏距离公式:一般而言,我们常见的欧式距离计算公式如下: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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python二维列表操作求一个向量与二维矩阵的乘积_python三维列表

    python二维列表操作求一个向量与二维矩阵的乘积_python三维列表Python二维列表操作创建二维列表对象获取二维列表行元素的个数获取二维列表总元素个数今天介绍一下Python中二维列表的一些操作。创建二维列表对象lst_2D=[]lst_1D_a=[“1″,”2″,”3”]lst_1D_b=[“4″,”5″,”6”]lst_1D_c=[“7″,”8″,”9”]lst_2D.append(lst_1D_a)lst_2D.append(lst_1D_b)lst_2D.append(lst_1D_c)print(lst_2

    2025年6月20日
    2
  • 国外免费空间域名_谷歌空间免费账号

    国外免费空间域名_谷歌空间免费账号 经过了最近一段时间的了解以及本人实际注册,发现了国外有很多的免费空间,但是问题还是很多的,最多的就是注册后访问不了了,可能原因有二,一是网站服务器那边的本身设置,二是我们国家的对外封锁。现将我注册过的网站公布如下,有成功的以及未成功的,总结问题也简要包括,供大家参考,不要再在这个上面浪费更多的时间了。如果大家看到有什么好的空间也请告之,不胜感激:(更新截止日期2007-07-1)注意:以下所说的

    2022年8月30日
    2
  • intelj 2021 激活码(注册激活)[通俗易懂]

    (intelj 2021 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsaWN…

    2022年3月21日
    55
  • C语言经典面试题_c语言常见面试题

    C语言经典面试题_c语言常见面试题100道c语言面试题2018年01月12日18:52:35cocos+unity+服务器阅读数:9166https://blog.csdn.net/themagickeyjianan/article/details/79047242题目来源:1、中兴、华为、慧通、英华达、微软亚洲技术中心等中外企业面试题目;2、C语言面试宝典(林锐《高质量编程第三版》)。说明:1、部…

    2022年8月28日
    2
  • java indexeddb_IndexedDB使用与出坑指南

    java indexeddb_IndexedDB使用与出坑指南概述本文通过对 IndexedDB 的使用方法和使用场景进行相关介绍 对常见的问题进行解答 同时 因为 MDN 中的相关文档缺乏相关逻辑性 所以不容易理解 本文将通过项目中常见的数据存储和操作需求来进行内容组织 读者能够通过本文学会在项目中正确的使用 IndexedDB 给应用带来的本地存储能力 并且避免一些常见的问题 原因 开发者需要在本地进行永久存储当我们进行一些较大的 SPA 页面开发时 我们会需要进行一

    2025年6月30日
    2
  • samba服务共享目录时 什么参数表示该共享目录可以浏览_电脑samba共享

    samba服务共享目录时 什么参数表示该共享目录可以浏览_电脑samba共享会不会有那么一天,生活可以简单到每天清早踏上一辆载着鲜花的脚踏车,微笑着穿过窄窄的街巷,为爱花的人送去芬芳,为需要知识的你送去帮助。上期为大家说了如何搭建dhcp服务(详情点击使用DHCP动态分配IP)本期为大家带来搭建samba服务先来说说samba服务的作用:跨平台支持文件共享服务samba的特点:支持匿名和身份验证共享数据,它的安全性也比较高samba支持的协议有:nmb(监听137,138号端口,提供域名访问,属于UDP协议)smb(监听139号端口,服务消息块,提供Linux平台共享

    2022年9月24日
    3

发表回复

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

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