2017-03-15 26 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