gpt4 book ai didi

matlab - 如何在Matlab中计算垂直距离

转载 作者:行者123 更新时间:2023-12-04 05:48:39 25 4
gpt4 key购买 nike

我有一个矩阵 A (Mx2) 和矩阵 B (Nx2),M>=N。
我必须计算垂直欧氏距离来测试 A 和 B 之间的相似性。引用图像,单个欧氏距离是每个 pi 和 p'i 之间的段,一旦计算了每个垂直距离,我就可以计算平均值或sum 获取单个参数。您知道执行此操作的 matlab 例程或此类脚本吗?
enter image description here

最佳答案

如果您知道 p1 .. p4 位于 p0 和 p5 之间,那么您可以使用三角形的面积轻松计算垂直距离:

d(p0p5, p1) = 2 * area(p0p1p5) / norm(p5-p0)

三角形面积由下式求出
area(p0p1p5) = sqrt(s * (s-norm(p0-p1)) * (s-norm(p1-p5)) * (s-norm(p5-p0)))

在哪里
s = (norm(p0-p1) + norm(p1-p5) + norm(p5-p0)) / 2

我认为您可以使用点积进行投影和勾股定理来提高性能:
d(p0p5, p1) = sqrt(norm(p1-p0)^2 - dot(p1-p0,p5-p0)^2/norm(p5-p0)^2)

无论哪种情况,如果您的成本函数涉及均方误差,您都可以消除 sqrt仅通过评估平方误差来调用。范数平方的计算也比调用 norm 便宜然后平方(使用点积代替)。

关于matlab - 如何在Matlab中计算垂直距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com