And one additional thing. Since number of gridpoints can be very large. It would be nice to have a solution where you don't want to store the gridponts, just go through them!
How to do a cycle through a N-dimensional grid, if n is not fixed?
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Mr M.
el 11 de Dic. de 2017
I know there is ngrid, but you have to know n. What if I want to do n for cycles, but I don't know n at the moment, it is a variable.
2 comentarios
Stephen23
el 11 de Dic. de 2017
I would like to go through the grid points of an N-dimensional grid, but N is an input parameter. For example in each dimension I would like K gridponts, so I have KxKxKx...xK = K^N points. If i know that N=2, I can use meshgrid, or in case of N=5, I can use [X1,X2,X3,X4,X5] = ngrid(1:K,1:K,1:K,1:K,1:K); But N is a variable! How to go through the gridpoints?
Respuesta aceptada
Guillaume
el 11 de Dic. de 2017
Editada: Guillaume
el 11 de Dic. de 2017
Please don't use answer boxes when commenting. Use the Comment on this Question or comment on this Answer box.
If I understood you want to generate N Nd arrays with ndgrid with N being unknown in advance. No problem, use the expansion of cell arrays into comma-separated lists to do that:
N = 5; %value can change
K = 4; %value can change
Ndarrays = cell(1, N); %create cell array to receive outputs of ndgrid
[Ndarrays{:}] = ndgrid(1:K); %fills all N Nd arrays
And in case, your K is different for each dimension, then:
N = randi([3 6]); %randomly chose N between 3 and 6. For demo
K = randi([2 7], 1, N); %randomly chose N K between 2 and 7. For demo
sizeinputs = arrayfun(@(k) 1:k, K, 'UniformOutput', false); %generate the inputs of ndgrid as a cell array
ndarrays = cell(1, N);
[ndarrays{:}] = ndgrid(sizeinputs{:});
9 comentarios
Stephen23
el 9 de Feb. de 2022
Editada: Stephen23
el 9 de Feb. de 2022
@Ali Taheri: you use the syntax that is explained and shown in detail in Guillaume's Answer:
[x{:}] = ndgrid(x{:});
Más respuestas (0)
Ver también
Categorías
Más información sobre Data Preprocessing 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!