回答
要洗牌矩陣的行,你可以使用RANDPERM
shuffledArray = orderedArray(randperm(size(orderedArray,1)),:);
randperm
會產生N
隨機值的列表,並且對它們進行排序,返回sort
第二輸出結果。
您的解決方案運行速度比我的快2.5倍,至少在我的電腦上。 – KnowledgeBone 2011-03-26 18:44:09
這可以通過Matlab的randsample函數爲矩陣行創建一個新的隨機索引來完成。
matrix=matrix(randsample(1:length(matrix),length(matrix)),:);
我認爲你的意思是使用'false' - 如果用替換採樣,得到的矩陣將包含重複的行,而其他的則會消失。在沒有替換的情況下抽樣的情況下,'randsample'調用'randperm',因此它應該比直接調用'randperm'稍微慢一些。 – Jonas 2011-03-26 19:19:12
固定,謝謝喬納斯。 – KnowledgeBone 2011-03-26 19:28:03
對於大型數據集,您可以使用自定義功能Shuffle
它使用D.E. Knuth的shuffle算法(也稱爲Fisher-Yates)和可愛的KISS隨機數生成器(G. Marsaglia)。
在閱讀answer of Jonas時,我發現讀起來有點難,難以理解。在Mathworks中,我找到了類似的question,答案更易讀,更易於理解。以從Mathworks公司我寫了一個函數的想法:
function ret = shuffleRow(mat)
[r c] = size(mat);
shuffledRow = randperm(r);
ret = mat(shuffledRow, :);
其實它做同樣的事情Jonas' answer。但我認爲它更具可讀性,更易於理解。
- 1. 隨機化行的順序
- 2. 半隨機順序
- 3. Python的隨機順序OrderedDict
- 4. 按鈕的隨機順序
- 5. IEnumerator的隨機化順序
- 6. 按隨機順序按組順序
- 7. 隨機矩陣在matlab中的特殊順序
- 8. Matlab,隨機改變單元格陣列中的順序
- 9. cf9 orm entityload隨機順序
- 10. 數字是隨機順序
- 11. 獲取隨機順序Laravel
- 12. Laravel:獲取隨機順序
- 13. MATLAB:排序和隨機
- 14. 按隨機順序的新Guid排序
- 15. 按表現排序的隨機順序
- 16. 在列上完成排序時的行的隨機順序
- 17. 的ArrayList的()SilverStripe隨機順序
- 18. iOS - NSMutableArray中對象的隨機/隨機順序
- 19. 以隨機的方式讀取行,然後以隨機順序打印數字
- 20. 以排序順序生成隨機數
- 21. 隨機顯示節點的順序?
- 22. RAND沒有隨機順序的限制
- 23. 圖像框的隨機順序
- 24. 隨機順序的可變內容
- 25. iTextSharp以隨機順序排列的Acofields
- 26. 如何隨機化圖像的順序?
- 27. WordPress循環中的隨機順序?
- 28. Rails的:每按隨機順序
- 29. 隨機的儀器測試順序
- 30. 允許隨機順序的XSD模式
可能重複[如何從MATLAB中的N點隨機選擇k點?](http://stackoverflow.com/questions/1856141/how-do-i-randomly-select-k-points-from- n-points-in-matlab) – Jonas 2011-03-26 18:15:22
這不是關於選擇,而是關於「排序」或洗牌矩陣的行 – cMinor 2011-03-26 18:16:11
其實,你是對的。這不是一個完全相同的問題。請參閱下面的答案。 – Jonas 2011-03-26 18:20:38