如何知道矩陣的元素只能是0或1,才能生成N * M矩陣的所有可能值?例如,如果我想要一個2 * 2的矩陣,我們可以得到16個不同的可能組合矩陣:[0 0; 0 0],[1 1; 1 1],[1 0; 0 1],[ 1 1; 0 0],[0 0 1 1] ...等在Matlab中生成矩陣的所有可能組合
2
A
回答
6
使用dec2base
-
combs = dec2base(0:power(2,N*M)-1,2) - '0'
這產生以行的所有可能的組合。因此,要選擇任何組合,您需要索引到combs
。因此,第一個組合[0,0,0,0]
將在combs(1,:)
處可用,並且最後一個[1,1,1,1]
將在comb(end,:)
處。
如果可能的值從一組不同的,像0,1,2,3
代替,使這個編輯 -
combs = dec2base(0:power(4,N*M)-1,4) - '0'
如果你想獲得,將具有相同大小的輸入矩陣,使用該組合此 -
combs_matshaped = reshape(permute(combs,[3 2 1]),N,M,[])
這產生儘可能多的2D切片作爲有組合的3D陣列和用於矩陣的每一組合爲「索引能夠」與第三維度索引。例如,如果您打算獲得第一個組合,請使用combs_matshaped(:,:,1)
,對於最後一個組合,請使用combs_matshaped(:,:,end)
。
1
另一種可能性(雖然Divakar's answer更簡單,可能更快):
c = cell(1,N*M);
[c{end:-1:1}] = ndgrid([0 1 2 3 ]); %// or change set of values: [0 1 2 3] etc
combs = cell2mat(cellfun(@(x) x(:), c, 'uni', 0)); %// results as row vectors
combs = reshape(combs.',N,M,[]); %// NxM matrices: combs(:,:,1), combs(:,:,2),...
相關問題
- 1. 生成矩陣的所有組合
- 2. matlab中的矩陣的所有組合
- 3. MATLAB:二進制矩陣的所有可能的組合
- 4. Matlab:二元矩陣的所有組合
- 5. 如何在Python中生成0-1矩陣的所有可能組合?
- 6. 生成陣列列的所有可能的組合在Python
- 7. 如何生成包含1和0的14x10矩陣的所有可能組合
- 8. 矩陣生成MATLAB
- 9. Matlab生成矩陣
- 10. 生成所有可能的組合
- 11. MATLAB - 矩陣組合
- 12. 新矩陣中的矩陣與矩陣的所有行組合
- 13. 暴力破解python中的所有可能的矩陣組合
- 14. 從矩陣生成的矩陣與Matlab生成的Python圖形
- 15. matlab中兩列矩陣的所有組合
- 16. 矩陣矩陣在Matlab中的數組?
- 17. 在.NET中生成幾列中所有可能的組合
- 18. 矩陣所有可能的兩行相反符號的組合
- 19. 如何獲得2xn矩陣的所有可能的組合
- 20. 在Perl中,如何生成列表的所有可能組合?
- 21. 在字典中生成所有可能的組合
- 22. 在嵌套字典中生成所有可能的組合
- 23. 如何在SQL中生成所有可能的數據組合?
- 24. 在Python中生成所有可能的排列組合
- 25. 在Python中生成所有可能的組合
- 26. 在R中生成所有可能的行組合?
- 27. 在列表中生成元素的所有可能組合
- 28. PHP:如何生成數組中所有可能的值組合?
- 29. 有可能在Matlab中做一個矩陣數組?
- 30. 如何從所有排列生成所有可能的組合?
完美,偉大的答案!哦,也許只是添加'重塑(梳子(1,:),N,M)'完整性 – Dan 2014-09-03 09:54:31
@Divakar梳子(1,:)將提取它作爲一個矢量而不是一個矩陣,有沒有辦法做到這一點,而不使用循環? – 2014-09-03 09:58:58
多數民衆贊成在罰款,丹回答了我 – 2014-09-03 10:02:31