如何用MATLAB在指定范围内生成多个互不重叠的二维随机坐标
- 笔者做实验仿真时遇到了这个问题,然后查阅了很多有关MATLAB生成不重叠的随机数的博客,但关于互不重叠的二维随机坐标的方法很少见,因此分享一下我的解决方案(因为方法是一步步摸索来的,所以整体从问题背景开始分成了4步来分析的)。
- 当坐标点的可选范围足够小时,随机取点容易出现重叠现象,重点就在于“互不重叠”,对于二维坐标,互不重叠就意味着横纵坐标都不能同时相等。
1)问题背景
-
第一步 假设存在以坐标原点为中心、面积为10×10平方千米的区域,该区域最初仅具有10个红色方块,其随机分布。但我们决定将所有方块放置于该区域中心的5×5平方千米区域内。
-
解决方法 这个问题很简单,使用rand()方法即可。在MATLAB中,rand函数产生由在(0, 1)之间均匀分布的随机数组成的数组。
如果要求在区间(a,b)内产生m行n列的随机数r = a + (b-a).*rand(m,n)。 -
MATLAB 程序如下:
%图一
x1=rand(10,1)*5000-2500; %横坐标在(-2500,2500)范围内,生成1*10的随机矩阵
y1=rand(1,10)*5000-2500; %纵坐标在(-2500,2500)范围内,生成1*10的随机矩阵
figure(1)
plot(x1,y1,'s