gpt4 book ai didi

matlab - 查找两个像素之间的距离的最简单方法是什么?

转载 作者:行者123 更新时间:2023-12-02 09:40:26 27 4
gpt4 key购买 nike

这可能是一个有点菜鸟的问题 - 但假设我想找到坐标为 (x1,y1) 和 (x2,y2) 的两个像素之间的距离)。使用 MatLab 执行此操作的最简单方法是什么?

最佳答案

pdist是一个不错的答案,但我认为它很慢(至少对于大量的点而言)。此外,pdist 需要统计工具箱,因此如果您没有该工具箱,则无法使用该答案。

我建议使用bsxfunpermute 结合和 reshape而不是独立于工具箱的解决方案。假设 X 是一个按以下方式排列的 2 列矩阵:

X = [x y];

xy 是您想要查找距离的所有点的 X 和 Y 坐标。因此,每一行都包含一个查询点:

X2 = permute(X, [3 2 1]);
out = sqrt(sum(bsxfun(@minus, X, X2).^2, 2));
out = reshape(out, size(X,1), []);

这应该为您提供与将 squareform 应用于 pdist 的输出相同的输出。具体来说,在 out 的元素 (i,j) 处,这将为您提供点 i 和点 j 之间的距离code>,因此对角线元素应给出值 0,因为自距离为 0。

乔纳斯的建议

如果我们稍微改变之前permute维度的方式,我们就可以避免reshape,通过用另一个permute调用替换它可能会代价高昂计算距离:

out = sqrt(sum(bsxfun(@minus, permute(X, [1 3 2]), permute(X, [3 1 2])).^2, 3));

关于matlab - 查找两个像素之间的距离的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28609268/

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