Save the elements of different pages of a matrix in a vector

2 visualizaciones (últimos 30 días)
I have a matrix Z 6x100x6 and I would like to store all the elements from the 6th and the 100th column them in vector. So I do
B=(6,100,:)
Matlab the generates again a multidimensional matrix 1x1x6. instead of vector 1x6. Whereas
B=(6,:,1)
will return a vector 1x100 with 100 elements of the first row of the first page. What I am I doing wrong? Thank you

Respuesta aceptada

Jan
Jan el 18 de Dic. de 2012
Editada: Jan el 18 de Dic. de 2012
A trailing dimension of the length 1 is automatically omitted by Matlab. But otherwise the number of dimensions is kept, and this is the expected behavior.
B = squeeze(Z(6, 100, :));
or
B = reshape(Z(6, 100, :), 1, []);
or explicitely
B = reshape(Z(6, 100, :), 1, size(Z, 3));
Try this:
size(zeros(1,1,10)) % >> 1, 1, 10
size(zeros(1,1,10,1)) % >> 1, 1, 10 also!

Más respuestas (2)

Wayne King
Wayne King el 18 de Dic. de 2012
Use squeeze()
A = randn(6,100,6);
B = squeeze(A(6,:,1));

Giorgos Papakonstantinou
Giorgos Papakonstantinou el 18 de Dic. de 2012
Thank you very much for the immediate answers. Both worked.

Categorías

Más información sobre Matrix Indexing 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