私は25x25の16偶数の四角形に分割された0の100x100グリッドに4つのオブジェクト(1s)があるという問題があります。 16個のサブマトリックスにわたってこれらの4つのオブジェクトのそれぞれの可能な位置をすべて列挙した(16^4 * 4)テーブルを作成する必要があります。対象物は、互いに重なり合わない限り、サブマトリックス内のどこにあってもよい。これは明らかに置換問題であるが、索引付けのために複雑さが増し、位置はランダムであるが、16番目の四角内で重複しないという事実がある。任意のポインタを愛するだろう!MATLAB - グリッドの特定の領域のランダムなインデックスの置換
私がしようとしたのは、あなたがいるサブマトリクスの左上隅の添え字を返す "top_left_corner(position)"という関数を作成することでした。 top_left_corner(1)=(1,1)、top_left_corner(2)=(26,1)、等そして、私が持っている:
pos = randsample(24,2);
I = pos(1)+top_left_corner(position,1);
J = pos(2)+top_left_corner(position,2);
問題は表にこの順列を生成して格納する方法であります線形インデックス。
ワウ!ありがとう、それは絶対に素晴らしいです。本当にそれを感謝:) –
私は最終的に私は必要な順列をかなり得ていなかったので、 'perm_rnd'を生成するために少し違ったことを追加するかもしれません。 'range = 0:15; 組み合わせ= permn(範囲、4); perms =転置(組み合わせ)。 perm_rnd = 0(サイズ(パーマ)); ' [ここ](https://www.mathworks.com/matlabcentral/fileexchange/7147-permn-v--n--k-) –
にあるパーマン関数を使用していたのは違いはありません。両方ともnumel(0:15)> 4の間にデカルト積を生成する – rahnema1