combnk
組み合わせのリストを生成するために使用します。しかし、結果の形状は私の必要なデータではありません。たとえば、次のようにしcombnk(1:3,2)
ます。
1 1 0
0 1 1
1 0 1
いいえ
1 2
1 3
2 3
どうすればできますか?combnk
結果を出すために最適な方法で変更するにはどうすればよいですか?
combnk
組み合わせのリストを生成するために使用します。しかし、結果の形状は私の必要なデータではありません。たとえば、次のようにしcombnk(1:3,2)
ます。
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