如何在特定区域中绘制随机点的模式?

时间:2017-03-15 14:16:03

标签: matlab plot

我编写了这个matlab代码来绘制图形特定区域中的一组随机点。我需要在xlim范围内设置ylim(1,512) (-1,512),但是当我在以下代码中替换此值时,没有绘制任何内容。我还尝试插入范围150,350表示我想要绘制所有点的图的中心部分。我该如何解决这个问题?

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

1 个答案:

答案 0 :(得分:2)

rand的输出将包含01之间的值,因此当您将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]);

enter image description here

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

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])