在绘图点

Over graphing points

我正在尝试随机创建 0 - 180 之间的 100 个点,然后绘制它们。然后检查它们之间的距离,如果它低于某个阈值,则在它们之间画一条线。我可以得到绘制的点,甚至一些线。但是不对,有些距离足够近的点没有映射,有些距离较远的点被映射。

clc; clear all; format compact;
a = [2 3]
b = [16 50]

array = randi(180,100,1);
array2 = randi(180,100,1);
% x = array(:, 1);
% y = array(:,2);
plot(array,array2, '.')
line (a,b)
% radius is 18, which is given k * given d
for j = 1:100
    for i = 1:100
        d = sqrt((array(j)-array(i))^2+(array2(j)-array2(i))^2);
        if d <= 18
           point1 = [array(j), array2(j)];
           point2 = [array(i), array2(i)];
           line( point1, point2)
        end
    end
end

示例输出:

我现在明白了。 line 不会从一个点到下一个点画一条线,它通过给定的 x 和 y 坐标画一条线,很像 plot。替换这个位:

point1 = [array(j), array2(j)];
point2 = [array(i), array2(i)];
line( point1, point2)

有了这个:

x = [array(i), array(j)];
y = [array2(i), array2(j)];
line(x, y);

或等同于:

line(array([i,j]),array2([i,j]));

主动提供的建议:

使用比 arrayarray2 更有意义的名称。例如 xy。用更好的名字很容易发现这个错误!