Borrar filtros
Borrar filtros

Genrate all combinations of a vector

2 visualizaciones (últimos 30 días)
Khanh
Khanh el 30 de Nov. de 2011
I have a vector of size n, whose each element can be an integer in the range from 0 to k. I need to generate all possible variants of such vector, i.e. k^n vectors totally.
The solutions I have found haven't met my need:
- allcomb.m doesn't work with n>=100. I got the following error
Maximum variable size allowed by the program is exceeded.
Error in ndgrid (line 66)
x = reshape(x(:,ones(1,prod(s))),[length(x) s]); % Expand x
- perms only generates possible permutations of the n elements of v.
I wonder if there is any function in matlab that does what I need?
Thanks,
  5 comentarios
Walter Roberson
Walter Roberson el 30 de Nov. de 2011
If you used one byte per element of the vector (e.g., uint8 data type), then you would have n bytes per entry, and (k+1)^n entries, for a total of approximately n*(k+1)^n bytes.
For n=100 and k=3, that would be 100*4^100 which would be about 1.6E62 bytes.
1 gigabyte is approximately 10^9 bytes, so you are asking for approximately 1.6E53 gigabytes.
So how much can you realistically store in (say) 4 gigabytes (the maximum address space for a 32 bit process)? n*4^n = 2^32 solves down to n = (1/2)*LambertW(8589934592*ln(2))/ln(2) which is a little over 14.
Thus, you realistically cannot produce all the combinations for vectors of length greater than 14.
Khanh
Khanh el 30 de Nov. de 2011
You're absolutely right, Walter. Thanks a lot for your effort. I should've thought about the memory issue before :( It was such a dump question.

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by