我编写了这个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])
答案 0 :(得分: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])