Generate a N length vector from a M length list (permutation)

2 views (last 30 days)
I have want to generate a 5-element vector:
A = [a1, a2, a3, a4, a5]
such that each element (a1...a5) could take on one of the three values [1, 2, 3];
There should be 3^5 number of outputs.
It should be easy but i have been trying for the last 90 minutes and got no luck.
  4 Comments
Yue Zhang
Yue Zhang on 2 Sep 2019
No. [1, 1, 1, 1, 2] and [1, 1, 1, 1, 2] should not be two different outputs. However [1, 1, 1, 1, 2] and [1, 1, 1, 2, 1] should.

Sign in to comment.

Answers (2)

Walter Roberson
Walter Roberson on 2 Sep 2019
[Ac{1:5}] = ndgrid(1:3);
result = cell2mat(cellfun(@(M) M(:), Ac, 'uniform', 0));

Andrei Bobrov
Andrei Bobrov on 2 Sep 2019
out = fullfact(3*ones(1,5));

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!