【发布时间】:2014-03-29 07:07:24
【问题描述】:
我有一个关于 Matlab 中所有矩阵行组合的问题。我目前从一个两列矩阵中创建了一个组合矩阵:
输入:
1 2
1 3
1 4
2 3
2 4
3 4
我得到的是以下内容:
1 2 3 4
1 3 2 4
1 4 2 3
当输入矩阵有 1:6 的条目时,它看起来像这样:
1 2 3 4 5 6
1 2 3 5 4 6
1 2 3 6 4 5
1 3 2 4 5 6
1 3 2 5 4 6
....
现在我已经实现了以下解决方案,几乎完美(感谢 Luis Mendo):
M = [1 2
1 3
1 4
2 3
2 4
3 4]; %// example data
n = floor(max(M(:))/2); %// size of tuples. Compute this way, or set manually
p = nchoosek(1:size(M,1), n).'; %'// generate all n-tuples of row indices
R = reshape(M(p,:).', n*size(M,2), []).'; %// generate result...
R = R(all(diff(sort(R.'))),:); %'//...removing combinations with repeated values
我现在遇到的问题是尺寸。我需要这个矩阵来进行优化算法,但是 nchoosek-command 会创建一个休矩阵,该矩阵会被最后一个命令行缩短。实际上,我只能将此解决方案用于长度为 15 位的输入向量,因为 nchoosek-command 无法处理更多。
我现在正在搜索的是一种无需 nchoosek-command 即可创建这些组合的方法。有人知道怎么做吗?
感谢和问候
乔纳斯
【问题讨论】:
标签: matlab optimization matrix combinations