gpt4 book ai didi

algorithm - 减少关闭点

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:28:27 24 4
gpt4 key购买 nike

input: C matrix 2xN (2D points)

output: C matrix 2xM (2D points) with equal or less points.

假设我们有一个包含多个 2D 点的 C 矩阵 2xN,它看起来像这样:

enter image description here

我们想要的是将“close”点分组为一个点,用其他点的平均值来衡量。例如,在第二张图中,每组蓝色圆圈为一个点,点坐标为蓝色圆圈内所有点的平均点。另外说“接近”,我的意思是:它们之间的距离将小于DELTA(已知标量)。所以想要的输出是:

enter image description here

关于算法的运行时间,我没有上限要求但是我多次调用那个方法...
我尝试过的:

function C = ReduceClosePoints(C ,l_boundry)
x_size = abs(l_boundry(1,1)-l_boundry(1,2)); %220
DELTA = x_size/10;
T = [];

for i=1:size(C,2)
sum = C(:,i);
n=1;
for j=1:size(C,2)
if i~=j %not in same point
D = DistancePointToPoint(C(:,i),C(:,j));
if D < DELTA
sum = sum + C(:,j);
n=n+1;
end
end
end
sum = sum./n; %new point -> save in T matrix
T = [T sum];
end
C = T;
end

我正在使用 Matlab。谢谢

最佳答案

从输出中删除重复项的最简单方法是在最后一步,通过替换:

C = T;

与:

C = unique(T', 'rows')';

请注意,矩阵上下文中的 unique() 只能按行工作,因此我们必须转置两次。

关于algorithm - 减少关闭点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21350367/

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