超过图形点

时间:2018-02-10 00:05:27

标签: matlab random graph matlab-figure distance

我试图从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

示例输出:

Sample output

1 个答案:

答案 0 :(得分:1)

我现在看到了这个问题。 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。用更好的名字很容易发现这个错误!