Re: [問題] 將矩陣重新組合成新矩陣

看板Mathematica作者 (-858993460)時間13年前 (2011/09/05 23:48), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《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
文章代碼(AID): #1EPEze6y (Mathematica)
文章代碼(AID): #1EPEze6y (Mathematica)