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?
조회 수: 4 (최근 30일)
이전 댓글 표시
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
Stephen23
2017년 12월 11일
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?
채택된 답변
Guillaume
2017년 12월 11일
편집: Guillaume
2017년 12월 11일
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
Stephen23
2022년 2월 9일
편집: Stephen23
2022년 2월 9일
@Ali Taheri: you use the syntax that is explained and shown in detail in Guillaume's Answer:
[x{:}] = ndgrid(x{:});
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Verification, Validation, and Test에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!