0
我使用combnk
來生成一個組合列表。但是,結果形狀不是我所需的數據。我想例如用於combnk(1:3,2)
:組合,子集,MATLAB
1 1 0
0 1 1
1 0 1
不
1 2
1 3
2 3
我該怎麼辦呢?如何以最佳方式更改combnk
以提供結果?
我使用combnk
來生成一個組合列表。但是,結果形狀不是我所需的數據。我想例如用於combnk(1:3,2)
:組合,子集,MATLAB
1 1 0
0 1 1
1 0 1
不
1 2
1 3
2 3
我該怎麼辦呢?如何以最佳方式更改combnk
以提供結果?
難道你的意思是你想
1 1 0
1 0 1
0 1 1
代替
1 2
1 3
2 3
使每一行是原始載體v
邏輯選擇向量?
您可以通過以下得到:
v = 1:3;
k = 2;
tmp = combnk(v,k);
M = size(tmp,1);
output = false(M,numel(v));
output(sub2ind(size(output),repmat((1:M)',1,k),tmp))=true;
結果:
output =
1 1 0
1 0 1
0 1 1
另一種解決方案:
c = combnk(1:3,2);
r = repmat(1:size(c,1), [1 size(c,2)]);
output = full(sparse(r,c(:),1))
結果:
output =
1 1 0
1 0 1
0 1 1