MATLAB Answers

選択肢から重複を許し​て並べる順列のパター​ンを列挙した行列を作​る方法

34 ビュー (過去 30 日間)
Yuki Koyama
Yuki Koyama 2020 年 5 月 10 日
コメント済み: Yuki Koyama 2020 年 5 月 11 日
たとえば,[0 1]から重複を許して3つ選び,それらを並べるパターンは
[0 0 0],[0 0 1],[0 1 1],...のように列挙できますが,
[[0 0 0];[0 0 1];[0 1 1];...]
のような行列として作りたい場合,for文を用いずに作る方法はありますか?

  0 件のコメント

サインインしてコメントする。

採用された回答

Akira Agata
Akira Agata 2020 年 5 月 10 日
meshgrid ndgrid 関数を利用する方法では如何でしょうか?
たとえば [0 1] から重複を許して3つ選ぶという例ですと、以下のようになります。
[x1,x2,x3] = meshgrid([0 1],[0 1],[0 1]);
A = [x1(:),x2(:),x3(:)];
>> A
A =
0 0 0
0 1 0
1 0 0
1 1 0
0 0 1
0 1 1
1 0 1
1 1 1

  2 件のコメント

Akira Agata
Akira Agata 2020 年 5 月 10 日
追伸:
出力に sortrows 関数をかけると、出力がより見やすくなります。
A = sortrows(A);
>> A
A =
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Yuki Koyama
Yuki Koyama 2020 年 5 月 11 日
鮮やかな方法ですね,非常に参考になりました.並べ替えもありがとうございます.

サインインしてコメントする。

その他の回答 (0 件)

タグ

製品


リリース

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!