0

これを行うための簡単なコマンドはありますか:

M = 0 0 0
    0 0 1
    0 1 0
    0 1 1
    1 0 0
    1 0 1
    1 1 0
    1 1 1

私はこれを見つけましたhttp://www.mathworks.co.kr/matlabcentral/fileexchange/7147-combn--4-3-しかし、これはまだmatlabではありません

やってみM = combn([0 1],3)Undefined function 'combn' for input arguments of type 'double'. in return

4

2 に答える 2

2

あなたはmatlabのperms()機能を探しています。

v0=[0 0 0]; 
v1=[1 0 0];
v2=[1 1 0];
v3=[1 1 1]; 
p1=perms(v1);
p2=perms(v2);
combs = cat(1,v0,p1,p2,v3);

もちろん、これはすべての順列を意味し、順序が重要であることを意味するため(ゼロの場合でも)、使用できる一意の組み合わせのみを取得します。

combs=unique(combs,'rows');

これにより、次のことが得られます。

combs =
     0     0     0
     0     0     1
     0     1     0
     0     1     1
     1     0     0
     1     0     1
     1     1     0
     1     1     1

ファイル交換からファイルをダウンロードした場合は、ファイルが matlab パスまたは現在のディレクトリにあることを確認してください。これにより、不明な関数エラーが回避されます。ここでmatlabのパスがどのように機能するかについて読むことができます

于 2014-04-29T20:42:15.180 に答える
2

簡単な方法は、 から0までのすべての数値を生成することです2^n-1。ここnで、 は行数であり、それらをバイナリに変換します。

n = 3;
result = dec2bin(0:2^n-1)-'0';

または、この Q&Aをあなたのケースに特化してください。

于 2014-04-29T22:20:14.683 に答える