In the previous post, I have learned that
[X, Y] = meshgrid(0:.1:0.5);
[X(:), Y(:)]
will create a matrix
0 0
0 0.1
0 0.2
...
Now I want to generalize to
[X, Y, Z] = meshgrid(0:.1:0.5);
[X(:), Y(:), Z(:)]
and it creates a matrix
ans = 216×3
0 0 0
0 0.1000 0
0 0.2000 0
0 0.3000 0
0 0.4000 0
0 0.5000 0
0.1000 0 0
0.1000 0.1000 0
0.1000 0.2000 0
0.1000 0.3000 0
But the matrix I want to create is like
0 0 0
0 0 0.1
0 0 0.2
0 0 0.3
0 0 0.4
0 0 0.5
0 0.1 0.1
0 0.1 0.2
0 0.1 0.3
Please advise.

 Respuesta aceptada

madhan ravi
madhan ravi el 24 de Jul. de 2020
[X, Y, Z] = ndgrid(0:.1:0.5);
[Z(:), Y(:), X(:)]

5 comentarios

alpedhuez
alpedhuez el 24 de Jul. de 2020
Thank you. But how does it work?
doc ndgrid
Bruno Luong
Bruno Luong el 24 de Jul. de 2020
Editada: Bruno Luong el 24 de Jul. de 2020
Thank you. But how does it work?
Just think those combinations you look for
(1,1)
(1,2)
...
(1,5)
(2,1)
...
(5,5)
as 2D coordinates of a set of grid points in a rectangles (1:5) x (1:5).
For 3 combinations, it's a 3D coordinates of grid points of a cube (1:5) x (1:5) x (1:5),
ndgrid() function generates grid points in n-dimensional space.
alpedhuez
alpedhuez el 25 de Jul. de 2020
Yes. But whey (Z,Y,X) not (X,Y,Z)?
Bruno Luong
Bruno Luong el 25 de Jul. de 2020
Editada: Bruno Luong el 25 de Jul. de 2020
Because NDGRID returns result such that the first input change first (more rapidly) and you want the opposite, X change most slowly. Actually the code as written by madhan is confusing, it's clearer this way to me:
[Z,Y,X] = ndgrid(0:.1:0.5);
[X(:), Y(:), Z(:)]
You'll see if 1D-grid of X, Y, Z are different and not all equal to 0.0.1:0:5, it makes a whole world less confusing.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Etiquetas

Preguntada:

el 24 de Jul. de 2020

Editada:

el 25 de Jul. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by