1

たとえば、座標 (0,0,0) と (1,1,1) の間にまたがる次元 1x1x1 の立方体があるとします。この立方体内にランダムなポイント (10 ポイントと仮定) を生成したいと考えています。これは、ある程度均一に分布しています (つまり、互いに特定の最小距離と最大距離内にあり、境界に近すぎない)。ループを使用せずにこれを行うにはどうすればよいですか? ベクトル/行列操作を使用してこれが不可能な場合は、ループを使用したソリューションでも可能です。

私の問題に関する背景の詳細​​をいくつか提供させてください (これは、正確に必要なものとその理由に関して役立ちます)。関数 F(x,y,z) を多面体内に統合したいと考えています。私は次のように数値的にそれをしたい:

$F(x,y,z) = \sum_{i} F(x_i,y_i,z_i) \times V_i(x_i,y_i,z_i)$

ここで、$F(x_i,y_i,z_i)$ は点 $(x_i,y_i,z_i)$ での関数の値であり、$V_i$ は重みです。したがって、積分を正確に計算するには、互いに近すぎず、遠すぎないランダムな点のセットを特定する必要があります (申し訳ありませんが、私自身、この範囲が何であるかはわかりません。これは、実際のコードを作成した後にのみ、パラメトリック スタディを使用して行います)。また、複数の多面体を持つ 3D メッシュに対してこれを行う必要があるため、ループを避けて速度を上げたいと考えています。

4

2 に答える 2

2

固定和を使用したこの素敵なランダム ベクトル ジェネレーターをチェックしてくださいFEX ファイル。このコードは、「値 [x1;x2;...;xn] の m 個のランダムな n 要素の列ベクトルを生成し、それぞれに固定の合計 s があり、a<=xi<=b という制限が適用されます。ベクトルは次のとおりです。解の n-1 次元空間にランダムかつ均一に分布. これは、その空間をさまざまなタイプのシンプレックス (線分、三角形、および四面体の多次元一般化) に分解することによって達成されます。は各シンプレックス内でベクトルを均一に分配するために使用され, さらに 'rand' を呼び出すと, それぞれの n-1 次元ボリュームに比例する確率を持つさまざまなタイプのシンプレックスを選択するのに役立ちます. このアルゴリズムは解の棄却を実行しません.規定されたハイパーキューブ内にすでに収まるように。」

于 2012-11-08T08:18:31.780 に答える
1

i=rand(3,10)各列が 1 つのポイントに対応し、各行が 1 つの軸 (x、y、z) の座標に対応する場合に使用します。

于 2012-11-08T22:14:14.727 に答える