Matlab 超过绘图点

Matlab 超过绘图点,matlab,random,graph,matlab-figure,distance,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);

我尝试从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
样本输出:

我现在明白了。直线不会从一个点到下一个点绘制直线,它通过给定的x和y坐标绘制直线,很像绘图。替换此位:

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]));
主动提供的意见:


使用比array和array2更敏感的名称。例如x和y。用更好的名字很容易发现这个bug

在你计算距离的那条线上有一个打字错误。注意到了,但它仍然不能解决任何问题。你在绘图后做了轴相等吗?也许距离看起来不同,因为轴的比例不同。你是最好的!这就解决了!是的,你是对的,我应该用更多有意义的名字来做这件事,尤其是在我把它贴在这里的时候。非常感谢。