How to create an N-ary array
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Suppose I have K variables, each of which can take the values 1 through N. I want to create a table such that each column corresponds to the Kth variable, and each row corresponds to a particular combination. This table will be N^K entries long and K entries wide. One way to do this would be, for example
[V1 V2 ... VK] = ngrid(1:N,1:N,...,1:N)
V = [V1 V2 ... VK]
However, this clearly does not generalize nicely to variable N. Is there a simple way to extend this code so it works for different K?
8 comentarios
James Tursa
el 18 de Dic. de 2020
Editada: James Tursa
el 18 de Dic. de 2020
OK, got it. Looks like you are basically counting in base N with K digits. How large can K and N be? This could easily eat all your memory if they are too large.
Respuestas (2)
Stephen23
el 18 de Dic. de 2020
Editada: Stephen23
el 19 de Dic. de 2020
N = 4;
K = 3;
C = cell(1,K);
[C{:}] = ndgrid(1:N);
C = cellfun(@(m)m(:),C,'uni',0);
M = [C{:}]
... lots more rows here not shown
How it works:
As James Tursa pointed out, you could quickly run out of memory for large values of K.
0 comentarios
Bruno Luong
el 19 de Dic. de 2020
N=3
K=5
[~,A] = ismember(dec2base(0:N^K-1,N),['0':'9' 'A':'Z']);
A = A-1
0 comentarios
Ver también
Categorías
Más información sobre Matrices and Arrays 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!