Re: [問題] 將矩陣重新組合成新矩陣
※ 引述《idwma (詔)》之銘言:
: 推 LPH66:有固定規則嗎? 還是隨機洗牌? 09/05 22:07
: → LPH66:隨機洗牌的話 Combinatorica` 裡有些函數可以組合起來用 09/05 22:11
: 有固定規則的 例如A的13位置 變成B的33位置
: A的16位置 變成B的54位置
:
: 由於不是整排交換 是一個一個挑出來改變的 所以很困擾阿QQ
其實也是可以...
轉換的規則用個矩陣寫起來
每個位置寫的是這個位置要放哪個元素
編號從左上由 1 開始由左而右再由上而下
以上面兩行為例 13 位置編號是 3 就把這個矩陣的 33 位置寫上 3
16 位置編號是 6 就把這個矩陣的 54 位置寫上 6
又以你第一篇文的範例來說 那個矩陣會長這樣
┌22 2 27 4 5 32┐
│ 7 8 9 21 11 12│
│13 3 15 16 17 18│
P=│19 20 1 10 23 24│
│25 26 14 6 28 30│
└31 29 33 34 35 36┘
接著在 << Combinatorica` 之後
Partition[Permute[Flatten[data],Flatten[P]],6]
就是你要的排列後矩陣了
主體是 Combinatorica`Permute
Permute[list,p] 會把 list 裡的元素照 p 所述的方式重排
所以先 Flatten 成一維陣列後用 Permute 重排 再用 Partition 切回矩陣即可
(其實和上一篇差不多 只是直接用現成的函式來做重排就是了)
--
順帶一提, 如果要隨機排列的話
Permute 的第二個參數改成 RandomPermutation[6*6] 即可
RandomPermutation 也是在 Combinatorica` 裡面的 它會產生一個隨機排列
--
'You've sort of made up for it tonight,' said Harry. 'Getting the
sword. Finishing the Horcrux. Saving my life.'
'That makes me sound a lot cooler then I was,' Ron mumbled.
'Stuff like that always sounds cooler then it really was,' said
Harry. 'I've been trying to tell you that for years.'
-- Harry Potter and the Deathly Hollows, P.308
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.230.62
推
09/06 02:07, , 1F
09/06 02:07, 1F
討論串 (同標題文章)
Mathematica 近期熱門文章
PTT數位生活區 即時熱門文章