2017-03-15 9 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の出力は、[1 512]にxとyの限界を広げるときにすべてのデータが内軸の低い1/512番目を示すことになるだろう01間の値を含むしようとしているとしたがって、あなたは個々の点を見ることはできません。 (y用)

あなたはランダムな値が実際に(x用)の範囲[1 512]にまたがるする場合と[-1 512]、それに応じ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

スエーヴァーありがとう、私はこの表記を使ったが、外側の境界ではなく、グラフの中央部分(x軸とy軸の両方の(150-350)の間にある)にのみ焦点を当ててみたい。 – Jiu

+0

@Jiuその後、軸の限界をそれに変更します。 – Suever

+0

rは範囲です、そうですか? – Jiu

関連する問題