2017-03-15 30 views
0

我写了这个matlab代码来绘制图的特定区域中的一组随机点。我需要将xlimylim设置在(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

'rand'在(0,1)内产生随机数。 –

回答

2

rand输出要01之间包含的值,以便当展开x和y限制[1 512]所有数据将要被内所示的下1/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]) 
+0

谢谢Suever,我也使用了这种表示法,但是我想让我的随机点只集中在图的中心部分(我的意思是在x和y轴之间(150-350)),而不是在外边界。 – Jiu

+0

@Jiu然后改变你的轴限制。 – Suever

+0

r是范围,对不对? – Jiu