我有一個問題,在100x100的網格上有4個對象(1s)被分成16個均勻的25x25的正方形。 我需要創建一個(16^4 * 4)表,其中條目列出了16個子表中這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 =零(大小(perms));' 這是使用permn函數,可以發現[這裏](https://www.mathworks.com/matlabcentral/fileexchange/7147-permn-v--n--k-) –
沒有區別。由於numel(0:15)> 4,所以都生成笛卡爾積 – rahnema1