MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by C Zeng on 24 May 2012

Hello, I asked it the day before yesterday but the code some expert told does not work well.

He wrote:

[C{1:N}]=ndgrid(0:2); M=reshape(vertcat(C{:}),[],N);

However, it does show 3^N rows, but not every combination of N-dim vector of {0,1,2}. Is there another way to show all 3^N combinations and put it in a matrix?

Thank you so much!

*No products are associated with this question.*

Answer by Daniel on 24 May 2012

Accepted answer

I will repeat the answer I gave to your original question

x = fullfact([3,3,3])-1

**EDIT**

For a general N

N = 3; x = fullfact(repmat(3, N, 1))-1

Show 6 older comments

C Zeng on 25 May 2012

Daniel, I am confused here, your full factorial design works for my purpose. I am asking whether I can set the dimension N, so I do not need to input 3 N times. repmat(3, N, 1) does not give what I want here. Can you advise?

Answer by Daniel on 24 May 2012

I think http://www.mathworks.com/matlabcentral/fileexchange/10064-allcomb might do it also.

## 5 Comments

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/39358#comment_81415

Please familiarize with the formatting capabilites on: http://www.mathworks.com/matlabcentral/answers/13205-tutorial-how-to-format-your-question-with-markup

Especially with the code section.

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/39358#comment_81418

How does this not work?

If I use N = 4; I get an 81x4 matrix of all possibilities. 3^N is 81.

etc. for all N.

Please elaborate on what doesn't work and please post this as a comment in your other question.

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/39358#comment_81420

@Sean you can double check your solution with unique(M, 'rows'), and it appears answers are repeated.

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/39358#comment_81425

huh, your fullfact one is better anyway.

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/39358#comment_81561

Yes, Sean, your code gives 3^N rows, but they have repeated one. Also I do not understand what does it mean? It seems that it is going to construct a grid in graphics, right? But I want all factorial combinations.