Matlab 如何在特定区域绘制随机点的图案?

Matlab 如何在特定区域绘制随机点的图案?,matlab,plot,Matlab,Plot,我编写了这段matlab代码,在图形的特定区域绘制一组随机点。我需要将xlim和ylim设置在(1512)(-1512)范围内,但当我在以下代码中替换此值时,不会绘制任何内容。我还尝试插入表示要在其中绘制所有点的图形中心部分的范围150350。我怎样才能解决这个问题 x = rand(1, 50); y = rand(1, 50); plot(x,y,'.') xlim([-0.2 1.2]) ylim([-0.2 1.2]) rand的输出将包含0和1之间的值,因此当您将x和y限制扩展到[1

我编写了这段matlab代码,在图形的特定区域绘制一组随机点。我需要将
xlim
ylim
设置在
(1512)(-1512)
范围内,但当我在以下代码中替换此值时,不会绘制任何内容。我还尝试插入表示要在其中绘制所有点的图形中心部分的范围
150350
。我怎样才能解决这个问题

x = rand(1, 50);
y = rand(1, 50);
plot(x,y,'.')
xlim([-0.2 1.2])
ylim([-0.2 1.2])

rand
的输出将包含
0
1
之间的值,因此当您将x和y限制扩展到
[1 512]
时,所有数据将显示在轴的下1/512范围内,因此您无法看到各个点

如果希望随机值实际跨越范围
[1 512]
(对于
x
)和
[-1 512]
(对于
y
),则需要相应地更改
rand
的输出

x = 1 + rand(1, 50) * 511;
y = rand(1, 50) * 513 - 1;

plot(x, y, '.')

xlim([1 512]);
ylim([-1 512]);

更通用的解决方案是创建一个匿名函数,该函数在指定范围内创建随机数

myrand = @(r, varargin)rand(varargin{:}) * diff(r) + min(r);

xrange = [1 512];
yrange = [-1 512];
x = myrand(xrange, 1, 50);
y = myrand(yrange, 1, 50);

plot(x, y, '.')

xlim(xrange);
ylim(yrange);
或者,如果希望点位于轴内部的某个区域内

x = myrand([50 100], 1, 50);
y = myrand([50 100], 1, 50);

plot(x, y, '.');

xlim([0 150])
ylim([0 150])

rand
的输出将包含
0
1
之间的值,因此当您将x和y限制扩展到
[1 512]
时,所有数据将显示在轴的下1/512范围内,因此您无法看到各个点

如果希望随机值实际跨越范围
[1 512]
(对于
x
)和
[-1 512]
(对于
y
),则需要相应地更改
rand
的输出

x = 1 + rand(1, 50) * 511;
y = rand(1, 50) * 513 - 1;

plot(x, y, '.')

xlim([1 512]);
ylim([-1 512]);

更通用的解决方案是创建一个匿名函数,该函数在指定范围内创建随机数

myrand = @(r, varargin)rand(varargin{:}) * diff(r) + min(r);

xrange = [1 512];
yrange = [-1 512];
x = myrand(xrange, 1, 50);
y = myrand(yrange, 1, 50);

plot(x, y, '.')

xlim(xrange);
ylim(yrange);
或者,如果希望点位于轴内部的某个区域内

x = myrand([50 100], 1, 50);
y = myrand([50 100], 1, 50);

plot(x, y, '.');

xlim([0 150])
ylim([0 150])

rand
在(0,1)范围内生成随机数。
rand
在(0,1)范围内生成随机数。谢谢你,Suever,我也使用了这个符号,但我希望我的随机点只集中在图的中心部分(我的意思是x轴和y轴的(150-350)之间)而不是在外部边界。@Jiu然后将你的轴限制更改为该限制。@Jiu是的,你想生成的是随机数的上限和下限。好了,我也用了这个符号,但我想让我的随机点只集中在图形的中心部分(我的意思是x轴和y轴都在(150-350)之间)而不是在外部边界。@Jiu然后将轴限制更改为该限制。@Jiu是的,这是您要生成的随机数的上限和下限