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

欧氏距离公式:

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

    • 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+(a2​−b2​)2+⋅⋅⋅(an​−bn​)2​
  • 事实上对于上面的公式如果我们通过向量的角度来考虑,就会变成是下列形式:

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

假设有下列矩阵AAA:

  • A=[a1a2a3b1b2b3]{A}= \left[{\begin{array}{}{a{_1}}&{a{_2}}&{a{_3}}\\{b{_1}}&{b{_2}}&{b{_3}}\end{array}}\right]A=[a1​b1​​a2​b2​​a3​b3​​]

  • 为了凑出上面的公式:

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

      • A‾=[a1a2a3b1b2b3][a1b1a2b2a3b3]=[(a1)2+(a1)2+(a1)2(a1)(b1)+(a2)(b2)+(a3)(b3)(a1)(b1)+(a2)(b2)+(a3)(b3)(b1)2+(b2)2+(b3)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=[a1​b1​​a2​b2​​a3​b3​​]⎣⎡​a1​a2​a3​​b1​b2​b3​​⎦⎤​=[(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‾.diag()\overline{A}.diag()A.diag() = [(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)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​ = [(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)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 [11]\left[{\begin{array}{}1 & 1\end{array}}\right][1​1​]
      • = [(a1)2+(a2)2+(a3)2(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2(b1)2+(b2)2+(b3)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​ = [11]T\left[{\begin{array}{}1 & 1\end{array}}\right]^T[1​1​]T [(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)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​]
      • = [(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)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​]
    • 经过了上面的处理,我们就可以得出上述的公式了

      • dist(A)=A‾1+A‾2−2A‾dist(A) = {\overline{A}{_1}} + {\overline{A}{_2}} - {\overline{2A}}dist(A)=A1​+A2​−2A

矩阵向量中两两间欧式距离计算相关推荐

  1. 在C++中计算经纬度(附34个城市两两间的距离计算结果)

    文章目录 计算说明 C++实现代码 计算结果 计算说明 本文使用C++根据输出两个城市的经纬度计算两地间的距离. 几点说明: 经度为E,如果开头为W则取负值: 纬度为N,如果开头为S则取负值: 为了避 ...

  2. html GPS坐标实现,JavaScript 实现GPS坐标点距离计算(两个经/纬度间的距离计算)...

    在LBS(基于位置服务)的一些应用中,有时我们会需要计算两个用户或两个坐标点之间的距离.要解决这类问题,就要了解空间几何的概念并结合数学中在三角函数公式计算两点之间的值.本文介绍基于经度/纬度的,两个 ...

  3. c#语言+计算两个位置的距离,计算两个GPS坐标的距离 方法一 - C#语言

    场景:已知两个GPS点的经纬度坐标信息.计算两点的距离. 1. 距离/纬度关系 GPS: 22.514519,113.380301 GPS: 22.511962,113.380301 距离:284.6 ...

  4. 计算特征向量间欧式距离的快捷方法

    最近因为课题需要,使用欧式距离来计算多个特征向量间的距离.开始的想法是使用循环来解决,发现计算复杂度高,时间长 在博客中看到作者GoHowz 和其引用frankzd博客,通过矩阵的方法来代替之前循环计 ...

  5. python通过经纬度算出距离_Python中如何利用经纬度进行距离计算

    前些天由于工作中需求,要计算经纬度之间的距离,当我去网上搜索距离计算的方法时,发现很多文章中的方法乍一看都是很不同的,同是进行距离计算,为啥这么不一样呢?后来才发现问题在于很多文章没有进行相关的原理说 ...

  6. 动画演示:两个矩阵的欧式距离计算

    文章目录 1. 动画演示 2. 计算公式 1. 动画演示 A−(a,b)A - (a,b)A−(a,b)和B−(c,d)B - (c,d)B−(c,d)的欧氏距离矩阵C−(a,c)C - (a,c)C ...

  7. Java 计算两经纬度间的距离

    之前在开发一个自动售货机设备,在投入生产使用时,使用到了根据经纬度计算出当前位置和目标位置的直线距离,这个距离不是路程距离,只是两坐标的直线距离,仅供参考.实际运用还要具体业务具体实现. 下面是实现两 ...

  8. 两经纬度之间的距离计算

    以下是计算两经纬度之间距离的代码,分为:头文件.源代码和测试代码三部分. 具体如下: 1 // LatLonDistanceDlg.h : 头文件 2 // 3 4 #pragma once 5 6 ...

  9. 计算两个矩阵的行向量之间的欧式距离

    1 问题描述 矩阵P的大小为[m, d]   用行向量表示为P1, P2,...,Pm 矩阵C的大小为[n, d]    用行向量表示为C1, C2,...,Cn 求矩阵P的每个行向量与矩阵C的每个行 ...

最新文章

  1. MySQL排序原理与MySQL5.6案例分析【转】
  2. 为什么当项目启动后执行两次过滤器 再进行访问资源时执行一次过滤器
  3. 进阶学习(3.9) Bridge Pattern 桥接模式
  4. Swift封装 滑出式导航栏
  5. Java Duration类| isZero()方法与示例
  6. PHP正则表达式提取超链接及其标题
  7. signature=172bb3bb7ef43cff1707b389c78d27cb,Signatures? of suicide
  8. linux切大文件为小文件,linux系统下分割大文件的方法
  9. 【推荐算法】今日头条、抖音推荐算法原理全文详解!
  10. 默认空间和webapps下项目部署
  11. luaprofiler探索
  12. 荐书|图解深度学习与神经网络:从张量到TensorFlow实现
  13. 常见视频编码格式解析
  14. HP服务器固件升级(ILO及bios升级:实操版)
  15. 手机计算机隐藏图标,怎么隐藏图标-隐藏小米手机桌面图标文字,只需一小段代码...
  16. 百度、微博的大数据算法Top10热搜怎么实现?
  17. 噬菌体基因组测序再添IF3.493好文
  18. (二)【Matlab】Matlab矩阵处理
  19. 23计算机考研复习规划和经验分享
  20. 第19天 写一个方法验证国内车牌号是否正确

热门文章

  1. HttpClient中addHeader与setHeader的区别
  2. 反向代理如何传递客户端 IP
  3. java xml设置xsd_Eclipse引用XSD实现XML配置文件提示标签的方法
  4. android的前端实现,项目中的小实现 (安卓, javaweb, 前端)
  5. 利用Python爬取金融市场数据
  6. 验证码识别打码的常见问题及使用方法
  7. 潜意识conscious
  8. 2.图神经网络GNN
  9. 【计算机毕业文章】基于SpringBoot的医院疫苗接种信息管理系统的设计与实现
  10. C/C++程序的断点调试