我试图从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
示例输出:
答案 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]));
未经请求的建议:
使用比array
和array2
更敏感的名称。例如x
和y
。用更好的名字很容易发现这个错误!