2012-11-08 79 views
1

說,我有一個跨越座標(0,0,0)和(1,1,1)之間的尺寸爲1x1x1的立方體。我想在這個立方體內生成一個隨機點集合(假設10個點),它們有點均勻分佈(即在彼此的某個最小和最大距離內,也不太接近邊界)。如何在不使用循環的情況下解決這個問題?如果這不可能使用向量/矩陣運算,那麼帶循環的解決方案也可以。在MATLAB中控制隨機數/數據集生成

讓我提供一些關於我的問題的更多背景細節(這將有助於我確切需要什麼以及爲什麼)。我想在一個多面體中集成一個函數F(x,y,z)。我想通過數字來做到這一點,如下所示:

$ F(X,Y,Z)= \ sum_ {I} F(X_I,Y_I,z_i)\倍V-I(X_I,Y_I,z_i)$

這裏,$ F(x_i,y_i,z_i)$是點$(x_i,y_i,z_i)$處的函數值,$ V_i $是權重。因此,爲了準確地計算積分,我需要確定一組相互不太靠近或彼此不太距離的隨機點(對不起,但我自己不知道這個範圍是什麼,我可以計算出來這只是在我有一個工作代碼後才使用參數化研究)。另外,我需要爲具有多個多面體的3D網格執行此操作,因此我希望避免循環來加速實現。

+2

分你的立方體成子立方體的座標,隨機選擇其中10,和放置你的觀點在裏面。 – Jonas

+0

有多少個子立方體?另外,Cube只是簡化了我的問題。我其實有一個多面體。 –

+0

到目前爲止你有什麼?你爲什麼反對基於循環的解決方案? –

回答

2

看看這個不錯的random vectors generator with fixed sum FEX文件。 該代碼「生成m個值爲[x1; x2; ...; xn]的m個隨機n元素列向量,每個列向量具有固定的總和s,並且受到限制a,其中向量是隨機均勻分佈在解的n-1維空間中的,這是通過將該空間分解成許多不同類型的單形(線段,三角形和四面體的多維推廣)來實現的。'rand'函數用於在每個單純形中均勻分佈向量,並且進一步調用rand函數來選擇不同類型的單純形,其概率與它們各自的n-1維體積成正比,該算法不會執行任何解決方案的拒絕 - 全部生成以便已經符合規定的超立方體。「

+0

看起來這是接近我想要的。謝謝Nate!我會閱讀細節並回來。 –

1

使用i=rand(3,10)其中每列對應於一個點,每一行對應於一個軸(X,Y,Z)

+0

謝謝。這是人們想到的第一件事,但這不能對位置提供任何控制。有些問題可能會彼此靠得太近。 –

+0

如果您控制位置,那麼它不是隨機的。 – chaohuang