how to write code to try every combination of N-dim vector?

2 次查看(过去 30 天)
Hello, I want to write a code to try every combination of a N-dimentional vector(with entry 0 or 1 or 2). For example, if N=3, all combinations are (0,0,0)(0,0,1)...(2,2,2) and there are 3^N=27.
One brutal way is for commands: for i=0:2->for j=... but I have to write N these for commands, which is not wise. I wonder it there a fast and smart way to try all combinations?
Thanks a lot!

采纳的回答

Sean de Wolski
Sean de Wolski 2012-5-22
[xx yy zz] = ndgrid(0:2);
[xx(:) yy(:) zz(:)]
Generalized (fixed)
n = 4
[C{1:n}] = ndgrid(0:2);
for ii = n:-1:1
M(:,ii) = C{ii}(:);
end
  9 个评论
C Zeng
C Zeng 2012-5-24
Hi, the code does not work and try all combinations:
n = 4
[C{1:n}] = ndgrid(0:2);
reshape(vertcat(C{:}),[],n)
In deed, it has many same combinations.
Sean de Wolski
Sean de Wolski 2012-5-25
This is true. I messed up on thinking reshape() would account for the order of the cells being stacked. It did not, see update.

请先登录,再进行评论。

更多回答(1 个)

Daniel Shub
Daniel Shub 2012-5-24
x = fullfact([3,3,3])-1

类别

Help CenterFile Exchange 中查找有关 Get Started with MATLAB 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by