clear;
N= 40;a=90;b=100;c=80;d=110;r=20;k=15;
x= randi([a,b],N,1); % 随机生成整数型函数
y= randi([c,d],N,1);
plot(x,y,'.');
z=[x,y];
g=-1;
for i=1:20
e=z(i,:);
for m=1:20
f=z(m,:);
R=pdist([e;f],'euclidean');
if R<=r
g=g+1;
end
end
end
因为你对所有的物质点都给了邻近的搜索,也就是说至少g有N次加1的机会(最多有N^2次),你没有排除i和m相等的情形,所以经常有g大于N,这是肯定的
clear;
N= 40;a=90;b=100;c=80;d=110;r=20;k=15;
x= randi([a,b],N,1); % 随机生成整数型函数
y= randi([c,d],N,1);
plot(x,y,'.');
z=[x,y];
g=-1;
for i=1:20
e=z(i,:);
for m=1:20
f=z(m,:);
R=pdist([e;f],'euclidean');
if R<=r % 你对所有的物质点都给了邻近的搜索,也就是说至少g有N次加1的机会,没有排除i和m相同
g=g+1;
end
end
end
我试了在第11行加入if m~=i可还是不行